异常类

package test1;

import java.util.Scanner;
import java.io.IOException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
//https://blog.csdn.net/qq_38080370/article/details/87880511
public class 异常类 {
//所有的异常类是从 java.lang.Exception 类继承的子类
	public static void main(String[] args) throws  FileNotFoundException, MyException {
		
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		try{
            System.out.println(num1 / num2);
		}catch(ArithmeticException e){
               System.out.println("除数不能为0");
		}
			String username = sc.next();
			if(username.length()<3){
	            throw new MyException("用户名小于三位Exception");
			}
			else{
		        System.out.println("用户名格式正确");
			}
		test();
	}
	public static void test() throws FileNotFoundException{
		File file = new File("abc");
		if(!file.exists())
		{
			throw new FileNotFoundException("该文件不存在");
		}
		else {
			FileInputStream fs = new FileInputStream(file);
		}
	}
}
class MyException extends Exception{
    public MyException(){
	  }
	  
	  public MyException(String msg){
		  super(msg);
	  }
}

异常处理:
1.trycatch—finally语句
(1) 异常监控的程序段放在try中; 
(2try发生异常,捕获异常; 
(3) 抛出的异常用catch捕获,然后用某种合理的方法处理该异常。
try{
while(i<=3){ 
System.out.println(str[i]); 
i++; } //i = 3时抛出异常,catch捕获异常
}catch(java.lang.ArrayIndexOutOfBoundsException e){ 
System.out.println("数组下标越界异常!");//合理方法处理异常 (隐式异常)
}finally{  
System.out.println("finally i="+i); 
}  
System.out.println("程序正常结束"); 
try语句基本格式:
//有一个 try 语句,至少要有一 个 catch 或者 finally 和它相配合。
try{ 
//可能发生异常的语句块 
}catch(ExceptionType1 e){ 
//处理 ExceptionType1 异常的语句块 
}catch(ExceptionType2 e){ 
//处理 ExceptionType2 异常的语句块 
}catch( „„ ){ 
//处理其它异常的语句块 
}finally{ 
//无论异常是否发生都一定执行的语句块 
}try 语句块中的代码执行时发生异常,程序的正常运行便中断,并抛出异常对象,然后在 try 块后面的各个 catch()中找出与异常对象相匹配的类。
满足二个中的一个就认为这个异常对象与对应的异常类相匹配
1.异常对象所属的类是 catch()中参数类的子类或者和其参数类相同;
2.catch()中参数类是一个接口时,发生的异常对象类实现了这一接口。

有多个 catch 子句时,最多只会执行其中一个 catch 语句块中的异常处理代码;
finally 子句为异常处理提供一个统一的出口,使得在控制流转到其它部分以前(即使有 returnbreak 语句),能够对程序的状态作统一的管理。 

throw 和 throws的区别:
Throw:
1.作用在方法内,表示抛出具体异常,由方法体内的语句处理。
2.具体向外抛出的动作,所以它抛出的是一个异常实体类。若执行了Throw一定是抛出了某种异常。

Throws:
1.作用在方法的声明上,表示如果抛出异常,则由该方法的调用者来进行异常处理。
2.主要的声明这个方法会抛出会抛出某种类型的异常,让它的使用者知道捕获异常的类型。
3.出现异常是一种可能性,但不一定会发生异常

//throws异常存在,但不一定发生
void testException(int a) throws IOException,{
           try{
                 ......
           }catch(Exception1 e){
              throw e;
           }catch(Exception2 e){
              System.out.println("出错了!");
           }
           //当存在时,一定会发生
           if(a!=b)
              throw new  Exception3("自定义异常");
}
UnsupportedOperationExceotion 如果应用程序试图创建大小为负的数组,则抛出异常!

NullPointerException 当应用程序试图访问空对象时,则抛出异常!

SQLException 提供关于数据库访问错误或其他错误信息的异常!

ArithmeticException——由于除数为0引起的异常;

ArrayIdexOutOfBoundsException—一访问数组元素下标越界,引起异常;

ArrayStoreException——由于数组存储空间不够引起的异常;

NegativeArraySizeException—一数组长度是负数,则产生异常;

IndexOutOfBoundsExcention——由于数组下标越界或字符串访问越界引起异常;

ClassCastException—一当把一个对象归为某个类,但实际上此对象并不是由这个类 创建的,也不是其子类创建的,则会引起异常;

IllegalMonitorStateException——监控器状态出错引起的异常;*********

SecurityException——由于访问了不应访问的指针,使安全性出问题而引起异常;******

IOException——由于文件未找到、未打开或者I/O操作不能进行而引起异常;

ClassNotFoundException——未找到指定名字的类或接口引起异常;******

CloneNotSupportedException——一程序中的一个对象引用Object类的clone方法,但 此对象并没有连接Cloneable接口,从而引起异常;******

InterruptedException—一当一个线程处于等待状态时,另一个线程中断此线程,从 而引起异常,有关线程的内容,将在下一章讲述;

NoSuchMethodException一所调用的方法未找到,引起异常;

IllegalAccessExcePtion—一试图访问一个非public方法;

StringIndexOutOfBoundsException——访问字符串序号越界,引起异常;

NumberFormatException——字符的UTF代码数据格式有错引起异常;

IllegalThreadException—一线程调用某个方法而所处状态不适当,引起异常;****

FileNotFoundException——未找到指定文件引起异常;

EOFException——未完成输入操作即遇文件结束引起异常。******
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值