异常抛出与异常的捕获与处理_怎样寻找异常抛给谁-程序员宅基地

技术标签: java  开发语言  

(1).概念

在java里,所有的异常都有一个共同的祖先Throwable(可抛出)。
Throwable:有两个重要的子类:Exception(异常)和Error(错误)。
Error:是程序无法处理的错误,表示运行应用程序中较严重的问题。
Exception:是程序本身可以处理的异常。


(2).抛出与捕获

在java中,异常处理机制为:抛出异常,捕捉异常。
1.抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。
2.捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着java程序的终止。

运行时异常会自动抛出。

(3).异常的处理代码块

完整的异常捕获处理由 try-catch-finally 语句实现

try{
    //可能出现异常的代码
    }catch(异常类型1 变量名 1){
    //处理异常的方式1
    }catch(异常类型 2 变量名 2){
    //处理异常的方式2
    }catch(异常类型3 变量名 3){
    //处理异常的方式3
    }
    ....
finally{
    //一定会执行的代码
    }
public class ExceptionTest {
    public static void main(String[] args) {
        int ret = 0;
        try {

            int num1 = 20;
            int num2 = 0;
            System.out.println(num1 + "/" +num2 + "=" +"你猜我运行吗?");
            ret = num1 / num2;

        } catch (Exception e) {
            System.out.println("程序异常,除数不能为0");
        } finally {
            System.out.println("ret:" + ret);
        }


    }
}

(4)抛出异常

1. throw :将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内)

格式:

throw 异常对象

2. throws :如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异常(可以是一种类型,也可以是多种类型,用逗号隔开)(位置: 写在方法名 或方法名列表之后 ,在方法体之前。)

格式:

public void method() throws 异常类型1,异常类型2,...异常类型n{
	
}

创建方法时,可以使用throws将可能发生的异常抛出,抛出以后该方法就不需要用try-catch来处理,当调用一个含有throws声明异常抛出的方法时,要求必须处理该异常,而处理方式有两种:1)使用try-catch捕获并解决异常,2)在当前方法上继续使用throws声明该异常的抛出。
 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mon_wet/article/details/130795755

智能推荐

iOS 开发中常用的排序(冒泡、选择、快速、插入、希尔、归并、基数)算法-程序员宅基地

文章浏览阅读48次。https://www.cnblogs.com/ZachRobin/p/7094852.html1、冒泡排序:  冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素。如果一个元素比另一个元素大(小),那么就交换这两个元素的位置。重复这一比较直至最后一个元素。这一比较会重复n-1趟,每一趟比较n-j次,j是已经排序好的元素个数。每一趟比较都能找出未排序元素中最大..._ios开发升序排序

运营必备九大互联网思维-程序员宅基地

文章浏览阅读8.9k次。Hello,大家好。今天给大家分享的是九大互联网思维。互联网思维,即在互联网的大背景下,对产品、用户、市场进行重新审视的思考方式。01 用户思维(关于管理者和消费者)用户思维是互联网思维最最重要的一个,包括三点:(1)得用户者得天下,用户是核心,让用户有满足感。用户是谁?中国十几亿人口,根据二八法则,80%都是屌丝,得屌丝者得天下。案例:微信、QQ汇集广大普通民众。(2)对于用户不仅要满足功能上的需求,更要洞察他们的情感需求,要感同身受,让他们有参与感,让用户主导产品的变化,进行更好_互联网思维

【序列dp】最长上升子序列(一)_最长上升子序列 dp-程序员宅基地

文章浏览阅读435次。登山的变体,求整个队列个数-max(每个点的最大上升序列+最大下降序列-1)但是有的区间为空,当a[k] >= a[i]时,即不满足上升子序列。计算时:a[i]=Math.max(满足条件的a[k])集合表示:所有以a[i]结尾的最长上升子序列。LIS的双向求解,主要掌握求最长下降序列,即。考虑如何计算,一般考虑最后一个点,可以取。空,a[0],a[1],…属性为Max即长度的最大值。_最长上升子序列 dp

bloom特效-程序员宅基地

文章浏览阅读99次。由于之前在各种场合看到别人贴出的bloom特效做的图片,一开始还以为是用的HDR技术,后来一研究才发现绝大部分都仅仅是一个bloom特效而已,遂打算学习一番。其实bloom是一个非常简单的后期图像处理过程,之所以称其为图像处理过程,是因为它是一种可以在图片生成完毕后再使用的后处理过程。那么它到底是什么样的一种过程呢?简单地说就是:Step1. 先对图片每一像素点进行一个亮..._camera下打开hdr,加上bloom特效

微信支付choosewxpay:fail-程序员宅基地

文章浏览阅读60次。这个问题多是由于微信支付目录没有写到最后一级解决办法比如原支付目录预留路径是http://xxx.com/wxpay/,但是实际支付目录是http://xxx.com/wxpay/test/index,在该目录下调用失败,将实际支付目录改为http://xxx.com/wxpay/index即可转载于:https://www.cnblogs.com/lantor/p/7429326.h..._微信res.err_msg choosewxpay

中职计算机教师学期发展计划,2020年中职计算机教师工作计划总结.doc-程序员宅基地

文章浏览阅读100次。中职计算机教师工作计划总结计算机应用基础教学计划(中职)《计算机应用基础》教学工作计划20XX——20XX学年度第一学期一、课程的目标和任务《计算机应用基础》是计算机专业学生一门必修的计算机基础课,也是以后计算机专业其他课程的入门课。开设本课程的目的是使学生通过本课程的学习,理解计算机的基本概念和主要功能。本课程的教学内容为:1)计算机基础知识。2)具备WindowsXP操作系统的基本知识,掌握W..._中专计算机应用基础教室学期工作计划

随便推点

图书管理员,c++_图书管理员c++-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏4次。小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他需要的书,请输出 −1。输出文件有 q 行,每行包含一个整数,如果存在第 i 个读者所需要的书,则在第 i 行输出第 i 个读者所需要的书中图书编码最小的那本书的图书编码,否则输出 −1。接下来的 q 行,每行包含两个正整数,以一个空格分开,第一个正整数代表图书馆里读者的需求码的长度,第二个正整数代表读者的需求码。_图书管理员c++

实验4-2-7 找完数 (20分)-程序员宅基地

文章浏览阅读3k次。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。输入格式:输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。输出格式:逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。输入样例:2 30输出样例:6 = 1 + 2 +

RecastNavigation------体素化和高度场生成解析_recast navigation-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏13次。像素化是将平面上的2D图像转化为一个个小正方形,与此类似,RecastNavigation的体素话过程是把空间几何体转换为一个个小正方体的组合(与游戏:我的世界相似)体素化过程如下:一. 将整个场景体素化对于任何一个在欧几里得坐标系里的场景,都可以找到一个三边与xyz..._recast navigation

unity3d脚本生命周期_unity3d脚本的生命周期-程序员宅基地

文章浏览阅读451次。脚本的生命周期代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class NewBehaviourScript : MonoBehaviour{ // 只会执行一次 无论脚本是否激活,都会被执行。前提是脚本所在对象必须是激活状态 private v..._unity3d脚本的生命周期

org.springframework.web.util.NestedServletException : Handler processing failed; nested exception is...-程序员宅基地

文章浏览阅读807次。1 ,错误原因,循环冗余检查 result.setNearUsers(userList);Page page = new Page();page.setTotal(searchNearUser.getTotal());page.setSize(userList.size());p..._org.springframework.web.util.nestedservletexception: handler processing fail

计算机受限制用户,由于该计算机受到限制,本次操作已被取消的解决办法-程序员宅基地

文章浏览阅读1.9k次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼如何解决由于该计算机受到限制,本次操作已被取消,请与系统管理员联系。上周末用了几款优化软件,今天打开心爱的WOW发现“由于该计算机受到限制,本次操作已被取消,请与系统管理员联系。”吐血了,8个多G的游戏不是要我重新下载吧。排除病毒,考虑到可能是用户权限的问题,于是新建一个用户并加入到administrator组,用新的用户名登陆进去依然是“由于该计算机受..._由于该计算机受到限制,本次操作已被取消

推荐文章

热门文章

相关标签