[英]Handling exceptions in the catch block?
这可能是一个愚蠢的问题,但我在其他任何地方都找不到答案。 我有一个可以读取和写入文件以进行保存的类。 现在,我正在尝试处理一些可能会出现的错误。 我想知道的是这是合法的还是Java的惯例:
try {
in = new ObjectInputStream(new FileInputStream(fileName));
score = (Score)in.readObject();
} catch() {
...
}
我遇到的问题是,如果文件为空,则无法读取文件。 该程序将崩溃,因此我想知道常见或常规的做法是从catch语句在文件中创建一些数据,然后再次尝试/捕获它。 然后在第二个捕获中,我可以使程序崩溃。
我要这样做的原因是在用户删除文件中的数据的情况下。
如果合法,这是语法吗?
try {
// try something here
} catch(//Exception here) {
// Create a new file and try again.
try {
// try again
} catch() {
// Crash the program
}
}
在尝试使用它之前,为什么不检查文件是否不存在或为空?
try {
File file = new File( fileName);
if( !file.exists() || file.length() == 0) {
// Create the file, initialize it with some default value
}
in = new ObjectInputStream(new FileInputStream( file));
score = (Score)in.readObject();
} catch() {
...
}
请注意,这是一个很小的争用条件,在您检查文件是否存在以及在FileInputStream
实际使用它之间,用户可以删除该文件。
在catch块中进行这样的工作通常是不好的形式。 如果您想重试失败,请使用类似以下的循环
int retryCount = 0;
boolean success = false;
while(!success && retryCount < 2) {
retryCount++;
try {
...
success = true;
} catch (Exception ex) {
// log exception
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.