use*_*496 0 java exception try-catch
在方法内部,我使用扫描仪读取文件内的文本.这个文件并不总是存在,如果没有,我只想做什么(即没有扫描).当然我可以使用这样的try/catch:
String data = null;
try
{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}
catch (FileNotFoundException ex)
{
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我可以做些什么来避免try/catch?因为我不喜欢局部变量未使用.我想的是:
String data = null;
File file_txt = new File(folder + "file.txt");
if (file_txt.exists())
{
Scanner scan = new Scanner(file_txt);
data=scan.nextLine();
scan.close();
}
Run Code Online (Sandbox Code Playgroud)
但当然有了这个我在Netbeans中得到一个错误,我无法建立我的项目......
不,它被检查了异常.尝试必须跟随catch块和/或最后阻止.处理已检查异常有两种方法.
方法1:使用包装代码 try/catch/finally
选项1
try{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}
catch (FileNotFoundException ex)
{
System.out.println("Caught " + ex);
}
Run Code Online (Sandbox Code Playgroud)
选项2
try{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}
finally
{
System.out.println("Finally ");
}
Run Code Online (Sandbox Code Playgroud)
选项3
try{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}catch(FileNotFoundException ex){
System.out.println("Caught " + ex );
}finally{
System.out.println("Finally ");
}
Run Code Online (Sandbox Code Playgroud)
方法2:使用throw和列出所有异常with throws子句抛出异常.
class ThrowsDemo {
static void throwOne() throws IllegalAccessException {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
try {
throwOne();
} catch (IllegalAccessException e) {
System.out.println("Caught " + e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意: Checked Exception意味着编译器强制您编写一些东西来处理此错误/异常.因此,AFAIK,除了上述方法之外,没有任何替代方法可以检查异常处理.
| 归档时间: |
|
| 查看次数: |
660 次 |
| 最近记录: |