public static void start() throws IOException, RuntimeException{
throw new RuntimeException("Not able to Start");
}
public static void main(String args[]) {
BufferedReader br = null;
try {
String line;
br = new BufferedReader(new FileReader("\home\usr\test.java"));
while ((line = br.readLine()) != null) {
start();
}
return;
} catch (Exception ex) {
ex.printStackTrace();
} catch (RuntimeException re) {
re.printStackTrace();
} finally {
// 是否会输出?
System.out.print("1");
}
}
#start
方法不会发生IOException,所以不需要throwspublic static void main(String... args) {
try (BufferedReader br = new BufferedReader(new FileReader("\home\usr\test.java"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// handle exception
}
}
javac使用了语法糖进行优化
public static void main(String args[]) {
BufferedReader br;
Throwable throwable;
br = new BufferedReader(new FileReader("\home\usr\test.java"));
throwable = null;
String line;
try {
while((line = br.readLine()) != null)
System.out.println(line);
} catch(Throwable throwable2) {
throwable = throwable2;
throw throwable2;
}finally{
if(br != null)
if(throwable != null)
try {
br.close();
} catch(Throwable throwable1) {
throwable.addSuppressed(throwable1);
}
else
br.close();
}
}
public class ExampleExceptionHandlingNew
{
public static void main( String[] args )
{
try {
URL url = new URL("http://www.yoursimpledate.server/");
BufferedReader reader = new BufferedReader(
new InputStreamReader(url.openStream()));
String line = reader.readLine();
SimpleDateFormat format = new SimpleDateFormat("MM/DD/YY");
Date date = format.parse(line);
}
catch(ParseException | IOException exception) {
// handle our problems here.
}
}
}
异常的处理方式有两种。1、自己处理。2、向上抛,交给调用者处理。
异常,千万不能捕获了之后什么也不做。或者只是使用e.printStacktrace。
具体的处理方式的选择其实原则比较简明:自己明确的知道如何处理的,就要处理掉。不知道如何处理的,就交给调用者处理