2015-06-23 14 views
9

Tôi có một lớp ngoại lệ nơi mà tôi muốn vượt qua số dòng hiệncó hiệu quả có được số dòng trong mã nguồn java tại thời gian biên dịch

 line 70: 
    line 71: throw new 
       LightException(FailureType.NOT_FOUND,this.getClass().getName(),linenum); 

Có cách nào để có được lineNum như 72 đây mà không hardcoding nó? Liệu Eclipse cung cấp bất cứ điều gì mà sẽ được thay thế vào số dòng hardcoded lúc biên dịch time.So mà tôi không cần phải đặt xấu xí số dòng mã hóa cứng

class LightException(FailureType type,String className,int lineNum) extends RuntimeException 
{ 

LightException(FailureType type,String className,int lineNum){.. 
// 
} 

@Override 
@Override public Throwable fillInStackTrace() { 
return this; 
} 
} 

Tôi không cần phải đăng nhập toàn bộ stack trace và không cần thiết điền vào dấu vết ngăn xếp cho tất cả ngoại lệ. Tôi muốn thêm số dòng từ nơi ngoại lệ được ném. Bất kỳ mã nào có thể được giải quyết tại thời gian biên dịch thành các hằng số?

Nếu không thì tôi có thể viết một cách đơn giản để xử lý trước mã của mình có thể đọc dòng và thay thế hằng số _my_line_num đặc biệt theo số dòng nhưng phải tồn tại.

Tôi cảm thấy một số công cụ xây dựng như gradle có thể làm điều này.

+0

AFAIK Tôi không nghĩ Eclipse cung cấp bất kỳ thứ gì như thế này. – KRUKUSA

+1

Tham khảo [this] (http://stackoverflow.com/questions/17473148/dynamically-get-the-current-line-number) – Madhan

+1

Tôi không muốn điều đó. Nếu tôi phải điền vào dấu vết ngăn xếp và nhận được dòng số lượng của nó.There là không có điểm trong việc tránh nó.Tôi thay vì sẽ có một tiện ích đơn giản làm điều đó cho tôi – bl3e

Trả lời

1

Tôi không chắc chắn nếu nó là good solution hay không nhưng bạn có thể đặt này:

int linenumber = Thread.currentThread().getStackTrace()[2].getLineNumber(); 

như một tham số trong của nhà thầu ngoại trừ của bạn và hiển thị nó như bạn cần.

+1

Bạn chưa đọc yêu cầu của OP * Tôi không cần phải ghi lại toàn bộ dấu vết ngăn xếp và không cần thiết điền vào dấu vết ngăn xếp cho tất cả các ngoại lệ. * – Madhan

+0

@Madhan bạn có thể cung cấp nó là một thử – Jegg

Các vấn đề liên quan