首页 > 编程语言 >秦疆的Java课程笔记:77 异常 Error和Exception

秦疆的Java课程笔记:77 异常 Error和Exception

时间:2023-12-19 16:46:42浏览次数:49  
标签:Exception Java 错误 77 Error 异常 public

  • 实际工作中,遇到的情况不可能非常完美。比如:写好的某个模块,用户输入不一定符合要求;程序要打开某个文件,但这个文件可能不存在或者格式不对;你要读取数据库的数据,数据可能是空的;程序在跑着,内存或者硬盘满了……等等情况。
  • 软件程序在运行过程中,这类例外情况,通称“异常”,英文:Exception,意思是例外。
  • 写程序要对异常做出合理处理,不至于程序崩溃。
  • 一些定义:
    • 异常制程序运行中出现的不期而至的各种状况。
    • 异常发生在程序运行期间,影响正常的程序执行流程。

  • 一个简单的循环调用(这是个比较严重的Error)
public class Demo1 {  
    public static void main(String[] args) {  
        new Demo1().a();  
    }  
    public void a() {  
        b();  
    }  
    public void b() {  
        a();  
    }  
}
====运行报错====
Exception in thread "main" java.lang.StackOverflowError
  • 又比如常见的除数为零
public class Demo2 {  
    public static void main(String[] args) {  
        System.out.println(11/0);  
    }  
}
====运行报错====
Exception in thread "main" java.lang.ArithmeticException: / by zero

  • 软件公司常有“测试”岗位,专门负责找bug,测试在某些情况下出现特定的问题。
  • 要理解Java异常处理是如何工作的,需要掌握以下三种异常类型:
    • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
    • 运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常想相反,运行时异常可以在编译时被忽略。
    • 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译时也检查不到。

  • 异常处理框架的思想:Java把异常当作一个对象处理,并定义一个基类java.lang.Throwable作为所有异常的超类。

  • 在Java API中已经定义了许多异常类,这些异常分为两大类,错误Error和异常Exception。详见:Class Throwable

  • Error类对象Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

  • Java虚拟机运行错误VirtualMachineError,当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,JVM一般会选择线程终止。

  • 还有发生在JVM试图执行应用时,如:类定义错误NoClassDefFoundError、链接错误LinkageError。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的情况。

  • Exception分支中有一个重要的子类运行时异常RuntimeException。这些异常不是检查异常,程序中可以选择捕获处理,也可以不处理。

    • 数组下标越界ArrayIndexOutOfBoundsException
    • 空指针异常NullPointerException
    • 算数异常ArithmeticException
    • 丢失资源MissingResourceException
    • 找不到类ClassNotFoundException
  • 这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽量避免这类异常的发生

  • Error和Exception的区别:

    • Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这种异常时,JVM一般会终止线程。
    • Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。

标签:Exception,Java,错误,77,Error,异常,public
From: https://www.cnblogs.com/Acolyte/p/17914118.html

相关文章

  • 打工笔记--------------------winform程序报错CLR20r3签名System.I0.IOException
    先看问题编写了一个程序在我本机运行没有问题,放到别人电脑上就有可能报这种错误System.I0.IOException  首先我问了一下ChatPgt:他说:CLR20r3是一个通用的错误代码,表示在.NETFramework中发生了未处理的异常。System.IO.IOException是与输入/输出操作相关的一个常见......
  • 无涯教程-Java - Comparator 比较器函数
    TreeSet和TreeMap都按排序顺序存储元素。但是,比较器(Comparator)精确地定义了排序顺序的含义。比较器(Comparator)接口定义了两个方法:compare()和equals()。Compare方法intcompare(Objectobj1,Objectobj2)obj1和obj2是要比较的对象。如果对象相等,则此方法返回零。如果obj......
  • IBM MQ 异常:com.ibm.mq.MQException
    出现两种现象:1、ibmmq通道不活动2、用程序读取ibmmq时,出现:com.ibm.mq.MQException查阅队列管理器的log(C:\ProgramData\IBM\MQ\qmgrs\IBMMQMANAGER\errors),发现:3、解决办法如下:查考链接:https://blog.csdn.net/weixin_39970855/article/details/114608063......
  • 启动微服务报错:java.lang.IllegalStateException: Service id not legal hostname (se
    Order微服务通过opneFeign调用storage和account时报错原因分析:服务名称不能有下划线,可以使用中划线,Springcloud无法识别下划线,将下划线改为中划线即可注意:这个改了之后,你在进行远程调用的时候,接口对应的方法接口也需要相应改变【分布式开发,一个微服务模块修改了,很可能......
  • 秦疆的Java课程笔记:76 面向对象 N中内部类
    内部类就是在一个类的内部再定义一个类。比如,在A类中定义一个B类,那么B类相对于A类来说就是内部类;相反,A类相对于B类就是外部类。秦疆老师声明,这小节主要是长长见识,实际编程作业中不推荐下列写法。成员内部类//先写一个有内部类的类=============================publiccl......
  • 无涯教程-Java - IdentityHashMap 类函数
    以下是IdentityHashMap支持的构造函数的列表。Sr.No.Constructor&Remark1IdentityHashMap()该构造函数构造一个新的,空的哈希,其默认预期最大大小为(21)。2IdentityHashMap(intExpectedMaxSize)此构造函数使用指定的预期最大大小构造一个新的空IdentityHashMap。......
  • java的8种异步实现方式
    异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过异步实现的场景。异步的八种实现方式线程ThreadFuture异步框架CompletableFutureSpring注解@A......
  • Java http请求json数据
    publicstaticStringsendJson(Stringurl,Stringjson){StringreturnValue="调用接口失败";CloseableHttpClienthttpClient=HttpClients.createDefault();ResponseHandler<String>responseHandler=newBasicResponseHandler();try{......
  • 数据库类型和java中类型不一样的处理
    在数据库中我们定义的是字符串类型,但是根据需求我们需要存一个数组对象这个时候我们需要进行处理将java中的该变量都处理成数组,为了和数据库进行对应,我们需要在实体类添加一个东西  当有了这个的时候我们就可以和数据库进行联系啦 还需要对相应的字段进行处理 ......
  • 什么是 JavaScript 闭包?
    什么是JavaScript闭包?在JavaScript中,闭包是指一个函数能够访问在它外部定义的变量。这些变量通常被称为“自由变量”,因为它们不是该函数的局部变量,也不是该函数的参数。闭包可以在函数内部创建,也可以在函数外部创建。JavaScript中的每个函数都是一个闭包,因为它们都能够访问......