首页 > 其他分享 >异常

异常

时间:2023-11-11 22:45:49浏览次数:25  
标签:System try println finally catch 异常

我们在编写程序的时候并不是每次都能完美运行,总会出现一些问题,也就是报错,本文主要讲的是运行是出现的错误。

Java中,运行时出现的错误被视为异常,而对应的就有异常处理机制
异常一般分为两种:Error:Java虚拟机无法解决的严重问题,一般不做处理。  Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。

下面是一些常见异常展示:

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class test {
    public static void main(String args[]) throws FileNotFoundException {
        /*
        int[] a = new int[1];
        a[1]=1;
        报错:java.lang.ArrayIndexOutOfBoundsException
        */
        
        /*
        int n  =Integer.parseInt("abc");
        System.out.println(n);
        报错:java.lang.NumberFormatException
        */
        
        /*    
        FileInputStream fis = new FileInputStream("a.txt");
        报错:java.io.FileNotFoundException: a.txt (系统找不到指定的文件。)
        */
        
    }
}
 

对于这些异常,我们或许会终止程序进行修正,但作为用户,我们更需要在程序出现异常时得到反馈。

try-catch-finally语句就能够满足我们的需求

try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。(try语句不能单独出现,需搭配catch或finally)

catch块:处理方法(catch可叠加)

finally:最终执行的代码,用于关闭和释放资源。(注:无论如何finally语句都会执行)

代码示例:

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class test {
    public static void main(String args[]) throws FileNotFoundException {
        /*
        try {
        int[] a = new int[1];
        a[1]=1;
        }catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("下标越界");
        }
        输出:下标越界
        */
        
        /*
        try {    
        FileInputStream fis = new FileInputStream("a.txt");
        }catch(FileNotFoundException e) {
            System.out.println("找不到相应文件");
        }
        输出:找不到相应文件
        */
        try {
            int a= 0;
            System.out.println(a);
        }catch(Exception e) {
            System.out.println("catch语句");
        }finally {
            System.out.println("finally语句");
        }
        //0
        //finally语句
        
    }
}
 

try-catch-finally语句是捕获异常。

throws关键字则是抛出异常。仅仅是将函数中可能出现的异常向调用者声明,而自己则不具体处理。

public class test {
    public static void main(String args[]) throws NumberFormatException {

        try {
        int n  =Integer.parseInt("abc");
        System.out.println(n);
        }catch(NumberFormatException e){
            
        }
    }
}
 //运行时无输出

throw关键字是手动抛出异常。

public class test {
    public static void main(String args[]) throws NumberFormatException {

        try {
        int n  =Integer.parseInt("abc");
        System.out.println(n);
        }catch(NumberFormatException e){
            throw new NumberFormatException("出现异常");//throw
        }
    }
}

 

 

总结:

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常(开发过程中的语法错误和逻辑错误不是异常)。

对于异常,我们有捕获和抛出两种方法、

捕获异常使用try-catch-finally语句,抛出异常使用关键字throws

在抛出异常是我们也可以使用关键字throw手动抛出。需要注意的是,抛出异常是一种比较消极的方法,因为其并不对异常做出改正。

 

标签:System,try,println,finally,catch,异常
From: https://www.cnblogs.com/kandh/p/17826408.html

相关文章

  • async、await的异常处理
    1.简介https://blog.csdn.net/Litt_White/article/details/1262789702.异常处理https://baijiahao.baidu.com/s?id=1778270777795474068&wfr=spider&for=pc......
  • Oracle执行块中的异常处理
    PL/SQL异常处理是PL/SQL块中对执行部分出现异常进行处理的部分。PL/SQL采用的是统一异常处理机制,当异常发生时,程序会自动跳转到异常处理部分,交给异常处理程序进行异常匹配,再调用对应的处理方法。如果程序出现异常,而没有找到对应的异常处理程序,则程序会直接中断抛出异常。PL/SQL异......
  • Maven打包项目时异常:Cannot access nexus-aliyun (http://maven.aliyun.com/nexus/con
    package是报错Cannotaccessnexus-aliyun(http://maven.aliyun.com/nexus/content/groups/public)inofflinemodeandtheartifactorg.apache.maven.surefire:maven-surefire-common:pom:2.22.2hasnotbeendownloadedfromitbefore.根据翻译的意思:无法在脱机模式下......
  • 电脑自动更新后,出现白屏死机等异常情况,卸载最近更新的方法
          找到最近安装的更新,因为不确定是哪个更新导致的问题,先卸载一个,然后再使用,如果发现问题还存在,就继续卸载可以记录下每次卸载的更新    ......
  • Oracle常用SQL-处理异常锁表
    锁表查询的代码有以下的形式:selectcount(*)fromv$locked_object;select*fromv$locked_object;查看哪个表被锁selectb.owner,b.object_name,a.session_id,a.locked_mode,a.object_idfromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id;查看是哪个ses......
  • Linux:SSH服务异常,无法登录解决办法
    我这能杀死啊,我还以为杀不死呢。。。[root@RV1126_RV1109:/]#killallky_ai_camera_engine_origin[root@RV1126_RV1109:/]#12文章目录20230816Linux中使用killall时无法找到进程的原因及解决方法一、引言二、可能的原因2.1进程名错误2.2进程未在执行2.3权限问题三、解决方......
  • 标题:Dubbo RPC开发中的序列化问题:深度解析反序列化导致的HashMap异常
    DubboRPC开发中的序列化问题:深度解析反序列化导致的HashMap异常在使用DubboRPC进行开发时,我们可能会遇到一些出乎意料的问题。其中之一就是在进行远程调用时,内部嵌套对象出现与预期不符的HashMap。这个问题的根源在于反序列化过程中找不到对象,导致解析成了HashMap。在这篇博客......
  • Java异常的分类
       异常处理     ......
  • 《java解惑》——异常谜题
    1.finally语句块中的return:问题:下面的小程序运行结果是什么:publicclassTest{publicstaticvoidmain(String[]args){System.out.println(decision());}staticbooleandecision(){try{returntrue;finally{returnfalse;......
  • spring mvc 异常统一处理方式
    springmvc异常统一处理方式springMVC提供的异常处理主要有两种方式,一种是直接实现自己的HandlerExceptionResolver,另一种是使用注解的方式实现一个专门用于处理异常的Controller——ExceptionHandler。1、HandlerExceptionResolver:实现自己的HandlerExceptionResolver,Hand......