Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Необработанное исключение при неустановленной переменной окружения #17

Closed
AlphaBeth opened this issue Apr 2, 2017 · 11 comments

Comments

@AlphaBeth
Copy link

Не существует переменной окружения EmployeeFile.
Exception in thread "main" java.io.FileNotFoundException: src\main\java\ru\ifmo\cs\programming\lab5\input.txt (No such file or directory)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at java.io.FileReader.<init>(FileReader.java:58)
	at ru.ifmo.cs.programming.lab5.App.main(App.java:70)
Exception in thread "Thread-0" java.lang.NullPointerException
	at java.io.File.<init>(File.java:277)
	at ru.ifmo.cs.programming.lab5.App.save(App.java:285)
	at ru.ifmo.cs.programming.lab5.App.lambda$main$0(App.java:64)
	at java.lang.Thread.run(Thread.java:745)

Конечному пользователю должно показываться как можно меньше исключений. Данную ситуацию можно корректно обработать.

@AlphaBeth
Copy link
Author

Из того же разряда.
Не нужно показывать исключения в ситуациях, которые вы уже обработали.

ivan@Acer:~/tmp/for-programming/target$ export EmployeeFile=
ivan@Acer:~/tmp/for-programming/target$ java -jar dict.jar 
Указанного файла не существует. 
Exception in thread "main" java.io.FileNotFoundException: src\main\java\ru\ifmo\cs\programming\lab5\input.txt (No such file or directory)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at java.io.FileReader.<init>(FileReader.java:58)
	at ru.ifmo.cs.programming.lab5.App.main(App.java:70)
java.io.FileNotFoundException:  (No such file or directory)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
	at java.io.PrintWriter.<init>(PrintWriter.java:263)
	at ru.ifmo.cs.programming.lab5.App.save(App.java:286)
	at ru.ifmo.cs.programming.lab5.App.lambda$main$0(App.java:64)
	at java.lang.Thread.run(Thread.java:745)

@skychik
Copy link
Owner

skychik commented Apr 2, 2017

Вы в какой ветке смотрите?

@AlphaBeth
Copy link
Author

master

@skychik
Copy link
Owner

skychik commented Apr 2, 2017

withoutStringFilePath
тут чекните

@AlphaBeth
Copy link
Author

Все равно выводятся страшные стектрейсы.

ivan@Acer:~/tmp/for-programming/target$ echo $EmployeeFile 
a.csv
ivan@Acer:~/tmp/for-programming/target$ ls $EmployeeFile 
ls: cannot access 'a.csv': No such file or directory
ivan@Acer:~/tmp/for-programming/target$ java -jar dict.jar 
Exception in thread "main" java.io.FileNotFoundException: Указанного файла не существует. 
	at ru.ifmo.cs.programming.lab5.core.InteractiveModeFunctions.load(InteractiveModeFunctions.java:81)
	at ru.ifmo.cs.programming.lab5.App.main(App.java:39)

А здесь даже нет понятного пользователю сообщения об ошибке.

ivan@Acer:~/tmp/for-programming/target$ unset EmployeeFile 
ivan@Acer:~/tmp/for-programming/target$ echo $EmployeeFile 

ivan@Acer:~/tmp/for-programming/target$ java -jar dict.jar 
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
	at java.io.File.<init>(File.java:277)
	at ru.ifmo.cs.programming.lab5.core.InteractiveModeFunctions.<clinit>(InteractiveModeFunctions.java:17)

@skychik
Copy link
Owner

skychik commented Apr 2, 2017

Чем стактрейсы страшны?)

@AlphaBeth
Copy link
Author

Тем, что они понятны только программисту. Для пользователя это будет сигналом, что что-то сломалось. Они скрывают полезную информацию от взгляда пользователя - ваше сообщение об ошибке, которое несет смысл и руководство к ее исправлению, теряется за огромным стектрейсом.

@skychik
Copy link
Owner

skychik commented Apr 2, 2017

ok

@skychik
Copy link
Owner

skychik commented Apr 2, 2017

поправлено

skychik added a commit that referenced this issue Apr 2, 2017
Close #18
Close #20
Close #23
Close #24
@skychik skychik closed this as completed Apr 2, 2017
@AlphaBeth
Copy link
Author

AlphaBeth commented Apr 8, 2017

ivan@Acer:~/Documents/code/for-programming/target$ unset EmployeeFile 
ivan@Acer:~/Documents/code/for-programming/target$ java -jar dict.jar 
Exception in thread "main" java.lang.NullPointerException
	at java.io.File.<init>(File.java:277)
	at ru.ifmo.cs.programming.lab5.App.main(App.java:31)

Не, не работает. 71e3332

@skychik
Copy link
Owner

skychik commented Apr 8, 2017

Сор, поправил

skychik added a commit that referenced this issue Apr 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants