JAVA学习——异常处理

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("行李扫描结束!!!");
    }
  }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值