1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失。
Java异常强制用户去考虑程序的强健性和安全性。异常处理不应该用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应的处理。
2.异常范例
1)
package zuoye13;
class Exc {
int i = 10;
}
public class ExceptionDemo01 {
public static void main(String[] args) {
Exc e = null;
e = new Exc();
System.out.println(e,i);
}
}
运行结果如下:
2)
package zuoye13;
class Exc {
int i = 10;
}
public class ExceptionDemo01 {
public static void main(String[] args) {
int a = 10;
int b = 0;
int temp = a/b;
System.out.println(temp);
}
}
运行结果如下:
一、捕获异常
1.异常格式:
try {
异常语句
}catch(Exception e) {
}finally {
一定会执行的代码
}
捕获异常:
package zuoye13;
class Exc {
int i = 10;
}
public class ExceptionDemo01 {
public static void main(String[] args) {
int a = 10;
int b = 0;
int temp = 0;
try {
temp = a/b;
} catch (ArithmeticException e) {
System.out.println(e);
}
System.out.println(temp);
}
}
运行结果如下:
无异常将正常输出:
package zuoye13;
class Exc {
int i = 10;
}
public class ExceptionDemo01 {
public static void main(String[] args) {
int a = 10;
int b = 10;
int temp = 0;
try {
temp = a/b;
} catch (ArithmeticException e) {
System.out.println(e);
}
System.out.println(temp);
}
}
运行结果如下:
二、常见异常
1.数组越界异常:ArryIndexOutOfBoundsException ;
2.数字格式化异常:NumberFormatException ;
3.算数异常:ArithmeticException ;
4.空指针异常:NullPointerException 。
package zuoye13;
class Exc {
int a = 10;
int b = 10;
}
public class ExceptionDemo01 {
public static void main(String[] args) {
int temp = 0;
Exc e = null;
e = new Exc();
temp = e.a/e.b;
System.out.println(temp);
System.out.println("程序输出");
}
}
运行结果如下:
package zuoye13;
class Exc {
int a = 10;
int b = 10;
}
public class ExceptionDemo01 {
public static void main(String[] args) {
int temp = 0;
Exc e = null;
// e = new Exc();
try {
temp = e.a/e.b;
System.out.println(temp);
}catch(NullPointerException e2) {
System.out.println("空指针异常:"+e2);
}catch(ArithmeticException e2) {
System.out.println("算数异常:"+e2);
}
System.out.println("程序输出");
}
}
运行结果如下:
三、throws关键字
1、在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理
2、格式:
public void tell() throws Exception{}
package zuoye13;
public class ExceptionDemo02 {
public static void main(String[] args) {
tell(10,0);
}
public static void tell(int i,int j) throws ArithmeticException {
int temp = 0;
temp = i/j;
System.out.println(temp);
}
}
运行结果如下:
使用try...catch :
package zuoye13;
public class ExceptionDemo02 {
public static void main(String[] args) {
try {
tell(10,0);
}catch(Exception e) {
System.out.println(e);
}
}
public static void tell(int i,int j) throws ArithmeticException {
int temp = 0;
temp = i/j;
System.out.println(temp);
}
}
运行结果如下:
如果方法抛出了异常,在调用该方法时,必须为捕捉的方法处理异常,当然,如果使用throws关键字将异常抛给上一级后,不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码 。
四、throw关键字throw通常用来抛出用户自定义异常,抛出的时候直接抛出异常类的实例化对象即可。
package zuoye13;
public class ExceptionDemo03 {
public static void main(String[] args) {
try {
throw new Exception("实例化异常对象");
}catch(Exception e) {
System.out.println(e);
}
}
}
运行结果如下:
五、自定义异常
自定义异常直接继承Exception类就可以完成自定义异常类
package zuoye13;
class MyException extends Exception { //创建自定义异常,继承Exception类
public MyException(String msg) { //构造方法
super(msg); //父类构造方法
}
}
public class ExceptionDemo04 {
public static void main(String[] args) { // 主方法
try { // try代码块处理可能出现异常的代码
throw new MyException("自定义异常");
} catch (MyException e) {
System.out.println(e);
}
}
}
运行结果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)