------- android培训、java培训、期待与您交流! ----------
1. Java 提供了特有的语句进行处理。
try
{
需要被检测的代码;
}
catch(异常类 变量) // 如果没问题, catch 不会运行
{
异常发生时的处理语句;
}
finally // finally 可以省略
{
一定会执行的语句;
}
2. 对捕获的异常对象进行常见的方法操作。
String getMessage(); 获取异常信息。
String toString(); 异常名称:异常信息。
printStackTrace(); 异常名称,异常信息,异常出现的位置。
3. Java 的异常处理机制。
|------------------- 交给 Java默认异常处理机制处理。输出异常后便终止程序运行。
| (不明确处理)
程序运行 --------------是否自行处理异常?|
(发生异常) |
|
|------------------- 编写 try - catch - finally 处理异常。可以灵活操控,适当处理。
(明确处理)
例1:产生异常。
class Demo
{
int div(int a, int b)
{
return a/b;
}
}
class Test
{
public static void main(String[] args)
{
Demo d = new Demo();
int x = d.div(4, 0);
System.out.println(x);
System.out.println("over");
}
}
运行结果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Demo.div(Test.java:5)
at Test.main(Test.java:15)
范例分析: 问题出在了 int x = d.div(4,0); 上。
例2: 处理异常。
class Demo
{
int div(int a, int b)
{
return a/b; // try在此处运算时检测出异常,并抛出的异常是属于 ArithmeticException 类。
}
}
class Test
{
public static void main(String[] args)
{
Demo d = new Demo();
try // try 中放入需要检测的语句,放入后 x 只能在 try 中有效,为了能打印出结果,需要将S.o.p 也放入try中
{
int x = d.div(4, 0);
System.out.println(x);
}
catch(Exception e) // Exception e = new ArithmeticException(); 多态
{ // catch 会与 try 抛出的类的类型进行匹配,然后再在相应的 catch 中处理。
System.out.println("一定会输出的结果");
}
System.out.println("over");
}
}
例3:对捕获的异常对象进行常见的方法操作。
class Demo
{
int div(int a, int b)
{
return a/b;
}
}
class Test
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int x = d.div(4, 0);
System.out.println(x);
}
catch(Exception e)
{
System.out.println("一定会输出的结果");
System.out.println(e.getMessage());
System.out.println(e.toString());
e.printStackTrace(); //其实jvm默认的异常处理机制,就是在调用printStackTrace方法。
}
}
}
返回结果:
一定会输出的结果
/ by zero
java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero
at Demo.div(Test.java:5)
at Test.main(Test.java:17)