常见异常分类、异常处理(一)

                                                常见异常分类、异常处理

常见的异常分类:

程序中的异常
                   示例1:给出除数和被除数,求商
                                如果除数为0,出异常
                                如果除数或者被除数不是数字,出异常
                   示例2:将d:/a.txt复制到e:/a.txt • 如果d:/a.txt不存在
                                如果e:/存在a.txt • 如果e盘空间不足
                                如果复制过程中出错

if(“d:/a.txt”这个文件存在){
   if(e盘的空间大于a.txt文件长度){
   if(文件复制一半IO流断掉){
  停止copy,输出:IO流出问题!
  }else{
      copyFile("d:/a.txt","e:/a.txt");
  }
  }else{
      输出:e盘空间不够存放a.txt!
  }
  }else{
      输出:a.txt不存在!
      }

程序中有异常时,面对异常该怎么办呢?
                   方式1:由开发者通过if-else来解决异常问题
                                代码臃肿:业务代码和异常处理代码放一起
                                程序员要花很大精力"堵漏洞“
                                程序员很难堵住所有“漏洞”,对程序员本身要求较高
                  方式2:开发者不需要通过if-else来解决异常问题,而是Java提供异常处理机制。它将异常处理代码和和业务代码分                                   离,使程序更优雅,更好的容错性,高键壮性。

异常的概念:
          软件程序在运行过程中发生的不正常的事件,比如要打开某一个文件时,这个文件可能不存在或者格式不对;你要读取数据库的数据,数据可能是空的;我们把遇见的这些问题,就叫做异常(Exception)

JAVA是采用   面向对象   的方式来处理异常。
          处理过程:
          1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常                                   对象提交给JRE,
          2.捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,从生成异常的方法开始回                                  溯,直到找到相应的异常处理代码为止

try-catch处理异常

try {
                copyFile("d:/a.txt","e:/a.txt");  //假设这里出现异常
            } catch (Exception e) {
            // TODO: handle exception
                e.printStackTrace();   //在这里进行捕获
            }

1.RuntTimeException运行时异常分析_运行时异常处理
          这类错误通常是由编程错误导致的,所以在编写程序时,并不要求必须使用异常机制来处理这类异常,经常需要通过增加“逻辑判断来处理这些异常”

int b=0;
System.out.println(1/b);

解决:

        int b=0;
		if (b!=0) {
			System.out.println(1/b);
		}

当程序访问一个空对象的成员变量或方法,或者访问一个空数组成员时会发生空指针异常(NullPointerException),怎么
处理,可以加个if语句体,解决空指针异常,通常是增加非空判断

2.ClassCastException强制转型报错

public class _Exception {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Animal animal=new Dog();
        Cat c=(Cat)animal; 
	}
}  
class Animal{……}
class Dog extends Animal{……}
class Cat extends Animal{……}

报错:Exception in thread "main" java.lang.ClassCastException: cn.xiaomu_07.Dog cannot be cast to cn.xiaomu_07.Cat
    at cn.xiaomu_07._Exception.main(_Exception.java:28)

解决:

public class _Exception {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Animal animal=new Dog();
        if (animal instanceof Cat) {
			Cat c=(Cat)animal;
		} }}  
class Animal{……}
class Dog extends Animal{……}
class Cat extends Animal{……}

3.数组越界(ArrayInsexOutOfBoundsException)异常处理

        int[] arr=new int[5];  
		System.out.println(arr[5]);
	  

解决:

        int[] arr=new int[5];  
		int v=5;
		if (v<arr.length) {
			System.out.println(arr[5]);
		}
		System.out.println(arr[5]);
	    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值