文章目录
JAVA学习——异常处理
try块和catch块
常见异常:ArithmeticException
//调用方法的语句包含在一个try块和一个catch块中
public class TestException{
public static void main(String[] args){
int a=6;
int b=0;
//int b=1;
//try块中是指正常运行的程序
try{
System.out.println("得到的数为"+a/b);
}
//catch块用来抓住异常
//catch(type ex) type:错误类型 ex:类似于方法中的参数
catch(ArithmeticException e){
System.out.println("计算异常!");
}
System.out.println("程序结束!");
}
}
常见异常:InputMismatchException ex
import java.util.*;
//调用方法的语句包含在一个try块和一个catch块中
public class TestException{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
boolean continueInput = true;
do{
try{
System.out.print("输入一个数:");
int num = input.nextInt();
System.out.println("读出该数:" + num);
continueInput = false;
}
//输入异常
catch(InputMismatchException ex){
System.out.println("程序异常,再试一次吧!");
input.nextLine();//不可缺,用来丢弃原有的输入行,获得新的输入行
}
}
while(continueInput);
System.out.println("程序结束!");
}
}
出现异常后结束进程
import java.util.*;
//代码知识点:当遇到一个异常情况后程序进程会直接结束。(因此程序的结束是因为一个异常)
public class TestException{
public static void main(String[] args){
int [] A = new int[3];
try{
for(int i=0; i<=3; i++){
A[i] = i;
System.out.println("A[" + i + "] = " + A[i]);
System.out.println("A[" + i + "] / (i-2) = " + A[i]/(i-2) ); //计算异常
//System.out.println("A[" + i + "] / (i-3) = " + A[i]/(i-3) ); //数组越界
}
}
//一个try块可以配合两个catch块
catch(ArrayIndexOutOfBoundsException ex){
System.out.println("数组越界!");
}
catch(ArithmeticException ex){
System.out.println("计算异常!");
}
System.out.println("程序结束!");
}
}
finally的用法
import java.util.*;
public class TestException{
public static void main(String[] args){
String [] HW ={
"Hello World!",
"Hello World!!",
"Hello World!!!"
};
for(int i=0;i<=3;i++){
try{
System.out.println(HW[i]);
}
catch(ArrayIndexOutOfBoundsException ex){
System.out.println("数组越界!");
}
//finally的用法,后面加上一个finally内语句
finally{
System.out.println("------------------------");
}
}
}
}
throw的基本用法
//创建自定义异常类MyException,必须继承Exception
class MyException extends Exception{
int pass;
MyException(int x){
pass = x;
}
}
class TestMyException {
public static void main(String [] args){
try{
for(int i=0;i<10;i++){
if(i == 4)
throw new MyException(i);
System.out.println("我的编号是:" + i);
}
}
catch(MyException e){
System.out.println("程序异常!");
System.out.println("异常的编号为:" + e.pass);
}
finally{
System.out.println("程序结束!!!");
}
}
}
小应用(扫描乘客行李)
Goods.java
public class Goods{
String name;
String dan;
public Goods(String name, String dan){
this.name = name;
this.dan = dan;
}
public String toString(){
return ("姓名:" + name + " 安全系数:" + dan);
}
}
TestMyException.java
//创建自定义异常类MyException,异常类一定继承Exception
class MyException extends Exception{
String na;
MyException(String a){
na = a;
}
}
class TestMyException {
public static void main(String [] args){
Goods [] goods = new Goods[3];
goods[0] = new Goods("苹果","安全");
goods[1] = new Goods("炸药","危险");
goods[2] = new Goods("小刀","危险");
System.out.println("————————扫描乘客行李————————");
try{
for(int i=0;i<3;i++){
//若发现行李中有异常的物品,则抛出异常
if(goods[i].dan == "危险")
throw new MyException(goods[i].name);
System.out.println(goods[i]);
}
}
catch(MyException e){
System.out.println("发现异常!!!");
System.out.println("异常的物品:" + e.na);
}
finally{
System.out.println("行李扫描结束!!!");
}
}
}