当前位置: 首页 > news >正文

免费个人网站建设公司网站制作留钱

免费个人网站建设公司,网站制作留钱,衡东建设局网站,免费网站空间 - 百度异常介绍 基本概念 Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)执行过程中所发生的异常事件可分为两大类 1,Error(错误):Java虚拟机无法…

异常介绍

  • 基本概念
    Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)
  • 执行过程中所发生的异常事件可分为两大类
    1,Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。Error是严重错误,程序会崩溃
    2,Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码处理。例如 空指针访问,试图读取不存在的文件,网络连接中断等等。
    Exception分为两大类:运行时异常(程序运行时,发生的异常)
    编译时异常(编程时,编译器检查出的异常)
  • 异常体系图
    在这里插入图片描述
  • 异常体系图小结
    1,异常分为两大类:运行时异常;编译时异常
    2,运行时异常:编译器检查不出来,一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。java.lang.RuntimeException类及它的子类都是运行时异常
    3,对于运行时异常,可以不作处理,因为这类异常很普通,若全处理可能会对程序的可持续性和运行效率产生影响
    4,编译时异常,是编译器要求必须处置的异常

运行时异常

  • 常见的运行时
    1,NullPointerException 空指针异常
    2,ArithmeticException 数学运算异常
    3,ArrayIndexOutOfBoundsException 数组下标越界异常
    4,ClassCastException 类型转换异常
    5,NumberFormatException 数字格式不正确异常[]

编译异常

  • 介绍:编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译
  • 常见的编译异常
    1,SQLException//操作数据库时,查询表可能发生异常
    2,IOException//操作文件时,发生的异常
    3,FileNotFoundException//当操作一个不存在的文件时,发生异常
    4,ClassNotFoundException//加载类,而该类不存在时,发生异常
    5,EOFException//操作文件,到文件末,发生异常
    6,IIIegalArguementException//参数异常

异常处理

基本介绍

异常处理就是当异常发生时,对异常处理的方式

异常处理的方式

  • try-catch-finally:程序员在代码中捕获发生的异常,自行处理
  • throws:将发生的异常抛出。交给调用者(方法)来处理,最顶级的处理者就是JVM

异常处理的示意图

在这里插入图片描述
在这里插入图片描述

try-catch 异常处理

  • 基本介绍:Java提供try和catch块来处理异常。try块用于包含可能出错的代码,catch块用于处理try块中发生的异常,可以根据需要在程序中有多个try-catch块
  • 基本语法
    try{
    //可疑代码
    //将异常生成对应的异常对象,传递给catch块
    }catch(异常){
    //对异常的处理
    }
    //如果没有finally,语法是可以通过的
public class ExceptionExcerise {public static void main(String[] args) {int num1 = 10;int num2 = 0;int res = 0;try {res = num1/num2;} catch (Exception e) {System.out.println(e.getMessage());//输出具体的错误}}
}

结果
在这里插入图片描述

  • try-catch 方式处理异常-注意事项
    1,如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块
    2,如果异常没有发生,则顺序执行try的代码块,不会进入到catch
    3,如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等),则使用如下代码-finally
public class ExceptionExcerise {public static void main(String[] args) {//异常处理快捷键:ctrl + atl + t//1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到 catch 块//2. 如果异常没有发生,则顺序执行 try 的代码块,不会进入到 catch//3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等)则使用如下代码- finallytry {String str = "zl";int a = Integer.parseInt(str);System.out.println("数字:"+a);//不会执行} catch (NumberFormatException e) {System.out.println("异常信息="+e.getMessage());} finally {System.out.println("代码块被执行");//一定会执行}System.out.println("程序继续");}
}

结果
在这里插入图片描述
4,可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,比如(Exception在后,NullPointerException在前),如果发生异常,只会匹配一个catch

public class ExceptionExcerise {public static void main(String[] args) {try {Person person = new Person();person = null;System.out.println(person.getName());//NullPointerExceptionint n1= 10;int n2 = 0;int res = n1/n2;//ArithmeticException} catch (NullPointerException e) {System.out.println("空指针异常="+e.getMessage());//只会匹配一个catch} catch (ArithmeticException e ){System.out.println("算术异常="+e.getMessage());}catch (Exception e){System.out.println(e.getMessage());}finally {}}
}
class Person{private String name = "Jack";public String getName() {return name;}
}

结果
在这里插入图片描述
5,可以进行try-finally配合使用,这种永达相当于没有捕获异常,因此程序会直接崩溃退出。

  • try-catch-finally 执行顺序小结
    1,如果没有出现异常,则执行try块中所有语句,不知执行catch块中语句,如果有finally,最后还需执行finally,最后还租要执行finally中的语句
    2,如果出现异常,则try块中异常发生后,try块剩下的语句不再执行。将执行catch块中的语句,如果有finally,最后还需执行finally里面的语句!

throws异常处理

  • 基本介绍
    1,如果一个方法中的语句执行时,可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示的声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
    2,在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
  • 注意事项
    1,对于编译异常,程序中必须处理,比如try-catch或throws
    2,对于运行时异常,程序中如果没有处理,默认就是throws的方式处理
    3,子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类
    4,在throws过程中,如果有方法try-catch,就相当于处理异常,就可以不必throws
public class ExceptionExcerise {public static void main(String[] args) {f2();}public static void f2()/*throws ArithmeticException */{//对于运行时异常,程序中如果没有处理,默认就是throws 的方式处理int n1 = 10;int n2 = 0;double res = n1/n2;}public static void f1()throws FileNotFoundException {//调用 f3() 报错//1. 因为 f3() 方法抛出的是一个编译异常//2. 即这时,就要 f1() 必须处理这个编译异常//3. 在 f1() 中,要么 try-catch-finally ,或者继续 throws 这个编译异常f3();//抛出异常}public static void f3()throws FileNotFoundException {FileInputStream fileInputStream = new FileInputStream("C:\\Users\\13627\\Desktop\\照片");//编译异常,文件不存在}public static  void f4(){//1. 在 f4()中调用方法 f5() 是 OK//2. 原因是 f5() 抛出的是运行异常//3. 而 java 中,并不要求程序员显示处理,因为有默认处理机制f5();}public static void f5()throws ArithmeticException{}
}
class Father{public void method()throws RuntimeException{}
}
class Son extends Father{//子类重写父类的方法时,对抛出异常的规定:// 子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常类型的子类型@Overridepublic void method()throws ArithmeticException {}
}

结果
在这里插入图片描述

自定义异常

  • 基本概念
    当程序中出现了某些“错误”,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息
  • 自定义异常的步骤
    1,定义类:自定义异常类名(自己写)继承Exception或RuntimeException
    2,如果继承Exception,属于编译异常
    3,如果继承RuntimeException,属于运行异常(通常情况下,继承RuntimeException)
    实例:
public class ExceptionExcerise01 {public static void main(String[] args) /*throws AgeException*/{int age = 180;//要求范围在 18 – 120 之间,否则抛出一个自定义异常if (!(age>=18&&age<=120)){//这里我们可以通过构造器,设置信息throw new AgeException("年龄需要在18-120之间");}System.out.println("你的年龄在正常范围");}
}/*** 自定义一个异常* 1,通常情况下,我们自定义异常是继承RuntimeException* 2,即把自定义异常做成 运行时异常,好处时,我们可以使用默认的处理机制* 3,也就是比较方便*/
class AgeException extends RuntimeException{public AgeException(String message) {//构造器super(message);}
}

结果
在这里插入图片描述
更改年龄

public class ExceptionExcerise01 {public static void main(String[] args) /*throws AgeException*/{int age = 100;//要求范围在 18 – 120 之间,否则抛出一个自定义异常if (!(age>=18&&age<=120)){//这里我们可以通过构造器,设置信息throw new AgeException("年龄需要在18-120之间");}System.out.println("你的年龄在正常范围");}
}/*** 自定义一个异常* 1,通常情况下,我们自定义异常是继承RuntimeException* 2,即把自定义异常做成 运行时异常,好处时,我们可以使用默认的处理机制* 3,也就是比较方便*/
class AgeException extends RuntimeException{public AgeException(String message) {//构造器super(message);}
}

结果
在这里插入图片描述

throw和throws的区别

在这里插入图片描述

http://www.yayakq.cn/news/37820/

相关文章:

  • 外贸自己做网站做网站总结
  • 成都定制网站设如何将域名指向网站
  • 中关村网站建设的公司营销型网站建设发难
  • 建完网站怎样维护wordpress 评论模板制作
  • 药企做网站需要哪些手续二维码生成器小程序
  • 网站显示乱码怎么办wordpress面包屑导航
  • 奉节网站建设wordpress 时区问题
  • 电子商务网站开发目标乐清网吧
  • 做的新网站能用多久游戏推广引流
  • 搭建公司网站费用网络公司 给 客户网站备案
  • 重庆所有做网站的公司潍坊定制网站搭建
  • 一定seo自己网站吗单页网站 jquery
  • 网站建设概要设计水果网络营销策划书
  • 保定网站制作系统云南工贸网站建设
  • 网站首页模块建设如何更新网站
  • 建设网站需要的工具天元建设集团有限公司商票逾期
  • 住房城乡与建设厅网站首页长沙网站网站建设
  • 加拿大28怎么做网站代理good work wordpress
  • 广州做网站哪个好前端可以做网站吗
  • 学校门户网站的作用学编程的网课平台
  • 行政机关网站建设wordpress爆破
  • 那里建站好把html文件生成网址
  • 网站推广排名张槎建网站公司
  • 如何修改上线网站开发区人才市场招聘信息最新招聘
  • 北京网站建设qq群临安做网站的公司
  • 做网站数据库怎么整做徽章的企业网站
  • 外汇自动跟单网站开发ui设计师做网站
  • 动易网站默认密码wordpress 重定向插件
  • html网站模仿腾讯域名
  • 男女做暧暧网站免费网络设计培训