zoukankan      html  css  js  c++  java
  • 课后作业java常用的异常处理情况

    在c++中我们的异常处理一般是返回一个数值,通过判断数值来决定执行那一步,但在java中引入了异常类

    可以供我们方便的处理异常下面介绍一些java异常类的基本结构:

     Throwable是所有异常类的基类,它之下分为:Error与Exception.

    其中Error是严重错误,一般为硬件错误,我们一般无法处理,

    Exception是程序本身可处理的错误,它之下有RuntimeException(运行时的错误)

    编译时不做检查出现问题回来修改代码,以及非运行时错误编译期间几必须处理否则无法编译。

    下面来介绍java常用的异常处理情况:

    1.java.lang.NullPointerException

    空指针异常,这个经常碰到十分讨厌,一般就是使用了未经初始化的对象,比如使用对象数组时:

    Student[] stu=new Student[10];
            for(int i=0;i<10;i++)
            {
                stu[i].setAge(i);
            }

     我们没有给数组的每个对象初始化所以出现了空指针异常,修改后如下:

            Student[] stu=new Student[10];
            for(int i=0;i<10;i++)
            {
                stu[i]=new Student();
                stu[i].setAge(i);
            }

    我们可以在使用对象时判断对象是否为空一次来避免空指针异常。

    2.java.lang.ArrayIndexOutOfBoundsException

    这个是数组下标越界异常,也是比较常见的异常,我们在使用数组尤其是下标是变量时十分容易导致下标越界,

    为了避免下标越界,我们可以调用length函数,与变量比较,这样就可以避免下标越界的问题了。

    如下面就存在下标越界的问题:

            int str[]= {1,2,3,4,5,6,7,8,9};
            for(int i=0;i<=10;i++)
            {
                System.out.println(str[i]+" ");
            }

     字符串也存在下标越界的异常:StringIndexOutOfBoundsException

            String str="123456789";
            for(int i=0;i<=10;i++)
            {
                System.out.print(str.charAt(i));
            }

     3.java.lang.ArithmeticException

    数学运算异常,通常就是0作为除数导致的,一般我们不会把零作为除数,也会有意识的避免,

    但是如果除数是一个表达式,那么除数就变得不可控了。所以我们可以判断一下除数是否为零来避免。

    下面是错误代码:

        public static void main(String[] a) 
        {
            int i=100,j=0,m=i/j;
            System.out.print(m);
    
        }

     4.java.lang.ClassCastException

    数据类型转换错误,将父类强制转换为子类的实例时会发生此异常,强制类型转换十分容易出错,我们一定要对类型进行判断。

                 People p=new People();
        Student stu=(Student) p;

     5.ava.lang.ClassNotFoundException

    这个异常是很多原本在JB等开发环境中开发的程序员,把JB下的程序包放在WTk下编译经常出现的问题,

    异常的解释是“指定的类不存在”。这里主要考虑一下类的名称和路径是否正确即可,如果是在JB下做的程序包,

    一般都是默认加上Package的,所以转到WTK下后要注意把Package的路径加上。

    6.java.lang.Error

    错误,是所有错误的基类,用于标识严重的程序运行问题,这些问题通常描述一些不应该被应用程序捕获的反常情况。

    原因:对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;系统访问的外部资源出现异常情况。

    解决方法:访问外部资源之前,首先检查该资源(如数据库)是否可正常连接或操作;访问外部资源时,如果进行了连接,一定要关闭操作,并且仅进行一次关闭操作;尽量在同一操作中共享外部资源,以减少该操作对资源的浪费,提高程序的执行效率。

    下面总结一下java的try...catch的规律;

    java通过try...catch实现对于异常的处理,如果没有try..catchjava虚拟机将退出。

    不管异常是否出现finally的语句一定会被执行。

    当有多个catch时java会从上到下匹配,找到后执行catch中的语句,且之后的catch不会被执行

    内层try的异常不仅仅会在内层寻找与之配对的catch,也会在外层寻找。

    .内层抛出了异常如果与之匹配的catch实在外层的则外层的异常并不会抛

    嵌套的finally是否执行取决于出错的位置:若最内层出错,则毫无疑问所有的finally都会执行。

    若在外层出错:由于语句会从上到下执行,若外层出错位置在内层finally之后则会执行内层的finally否则不会执行(不管内层有没有错误)。

  • 相关阅读:
    深入理解Java中停止线程
    浅入浅出JDBC————1分钟了解JDBC
    Java多线程入门中几个常用的方法
    创建Java多线程的两种方式和线程异常
    小白学习前端---第二天 HTML的基本属性————1
    Info类
    Control类
    demo 代码
    防作弊原理
    状态类
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/13899557.html
Copyright © 2011-2022 走看看