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

                                                常见异常分类、异常处理

常见的异常分类:java

程序中的异常
                   示例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();   //在这里进行捕获
            }code

1.RuntTimeException运行时异常分析_运行时异常处理
          这类错误一般是由编程错误致使的,因此在编写程序时,并不要求必须使用异常机制来处理这类异常,常常须要经过增长“逻辑判断来处理这些异常”对象

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

解决:blog

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]);
	    }
相关文章
相关标签/搜索