![]()
![]()
public class 处理Exception {
public static void main(String []ages){
//产生异常
//除0异常
//1.捕获
try
{
//int i=12/0;
//int 出现了异常直接跳到catch
String a=null;
// a.length();
//打开一些资源
String s=" ";
System.out.println("打开资源");
//使用
System.out.println("使用资源");
//如果在使用中出现异常
a.length();
//关闭资源并释放
//可能不被执行,放入finall里
//System.out.println("希望一定要执行的关闭资源,释放内存代码");
}
catch(ArithmeticException ex){
//针对特定的异常进行特别的处理
//除0;
System.out.println("捕获了ArithmeticException的异常");
//获取异常信息
String str= ex.getMessage();
//处理方式显示;记录日志
System.out.println("异常信息="+str);
//把异常详细信息输出到控制台
ex.printStackTrace();
System.out.println();
}
catch(NullPointerException ex){
//针对特定的异常进行特别的处理
//空值
System.out.println("捕获了NullPointerException的异常");
//获取异常信息
String str= ex.getMessage();
//处理方式显示;记录日志
System.out.println("异常信息="+str);
//把异常详细信息输出到控制台
ex.printStackTrace();
System.out.println();
}
//兜底
catch(Exception ex){
//针对特定的异常进行特别的处理
System.out.println("捕获了Exception的异常");
//获取异常信息
String str= ex.getMessage();
//处理方式显示;记录日志
System.out.println("异常信息="+str);
//把异常详细信息输出到控制台
ex.printStackTrace();
System.out.println();
}
finally//一定会被执行的代码
{
System.out.println("希望一定要执行的关闭资源,释放内存代码");
}
System.out.println("程序还在走");
//即使发生异常也会执行finally
// try{int i=12/0;}
// finally{
// System.out.println("hehe");
// }
}
public class MyThrow {
//把 throws放在方法的后面 特别声明有可能出现的异常
//方法本身不处理,交给调用者处理
//抛出异常,显示给使用者错误的原因
public int chu(int a,int b)throws Exception
{ if(b==0){
Exception e=new Exception("b输入错误");
throw e;
}
return a/b;
}
//自己定义异常
public void test() throws Exception{
//自己定义
Exception e=new Exception("我自定义的异常信息");
throw e;
}
public static void main(String []ages) throws Exception
//main方法里需要解决问题而不是抛出
{
MyThrow a=new MyThrow();
// try {
// a.chu(10, 0);
// }
// catch (Exception e) {
// // TODO 自动生成的 catch 块
// //e.printStackTrace();
// System.out.println("我捕获了类常"+e.getMessage());
//
// throw e;//处理后抛出异常
// }
//运行自定义的错误信息
try{a.test();}
catch(Exception e){
System.out.println(e.getMessage());
}
a.chu(10, 0);
System.out.println("结束了");
}