Java基础 —— 异常

目录

  • 异常的概念及分类
  • 异常的处理try-catch-finally
  • 异常抛出throw(s)
  • 自定义异常

异常的概念及分类

  • 什么是异常
    • 异常是指在程序的运行过程中发生的一些不正常事件。比如:除0溢出、数组下标越界、所要读取的文件不存在。
  • 异常导致的后果
    • 项目JAVA程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将其被提交给JAVA运行时系统,这个过程称为抛出异常,不处理的话会直接导致程序直接中断。
  • 如何防止程序中断
    • 设计良好的程序应该在程序异常发生时提供处理这些异常的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
  • 异常的分类
    在这里插入图片描述
  • JAVA异常处理机制
    在这里插入图片描述

异常的处理try-catch-finally

在这里插入图片描述

例如下面这个例子,虽然提示出错,但还是能输出"end"

class Person
{String name;
}public class test {public static void main(String[] args) {Person p = null;//空指针异常try{p.name = "xiaoMing";}finally{System.out.println("end");}}
}

异常捕获:

class Person
{String name;
}public class test {public static void main(String[] args) {Person p = null;//空指针异常try{p.name = "xiaoMing";//或者catch(Exception e)代表捕获所有异常 后面加个e类似int a变量名}catch(java.lang.NullPointerException e){//捕获异常,就是编译器里面提示的具体错误System.out.println("空指针,检查下是否没有初始化");}finally{System.out.println("end");}}
}

异常抛出throw(s)

在这里插入图片描述
在这里插入图片描述
例子:

class Bar{int age;public Bar(int age){this.age = age;}void check()throws IllegalArgumentException{//throws用于在方法上标识要暴露的异常if (age < 18){throw new IllegalArgumentException("年纪太小");//throw抛出异常}}
}public class test {public static void main(String[] args) {Bar b = new Bar(15);try{b.check();}catch(IllegalArgumentException e){//alt+?快捷键System.out.println(e.getMessage());//输出年纪太小e.printStackTrace();			   //输出异常}finally{System.out.println("end");}}}

运行结果:

年纪太小
java.lang.IllegalArgumentException: 年纪太小at Bar.check(test.java:11)at test.main(test.java:21)
end

自定义异常

在这里插入图片描述
例子:


class Bar{int age;public Bar(int age){this.age = age;}void check()throws AgeLessThanEighteenException{//throws用于在方法上标识要暴露的异常{if (age < 18){throw new AgeLessThanEighteenException("年纪太小");//throw抛出异常}}
}class AgeLessThanEighteenException extends Exception{private String message;public AgeLessThanEighteenException(String message){this.message = message;}
}public class test {public static void main(String[] args) {Bar b = new Bar(15);try{b.check();}catch(AgeLessThanEighteenException e){//这个属于前面PPT讲的受查异常,必须要进行catch处理System.out.println(e.getMessage());e.printStackTrace();			}finally{System.out.println("end");}}}

结果:

null
AgeLessThanEighteenExceptionat Bar.check(test.java:11)at test.main(test.java:28)
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel函数去重_excel去重函数

在日常工作问题中&#xff0c;经常会遇到一个问题&#xff0c;当你呼哧呼哧处理了大半天的数据后才发现&#xff0c;原始数据好多重复的&#xff0c;导致你得到的结果全部错误……顿时&#xff0c;想砍人的心都有了&#xff0c;心理阴影面积无穷大……当然&#xff0c;胖斯基也…

解决网站请求速度慢的一些方法

开门见山&#xff0c;网站请求反应速度慢首先考虑服务器问题。 我在开发中遇到的就是服务器实例限制cpu占用10%以内访问正常&#xff0c;超出则限制访问速度&#xff0c;也就是网站请求速度慢 具体和阿里工程师聊天截图如下&#xff1a; 按照对方说的&#xff0c;升级了相关配置…

Windows Server 2012 在个人终端上使用的推荐设置

Windows Server 2012&#xff0c;也就是 Windows 8 的服务器版本&#xff0c;相对于 Windows 8 企业版而言&#xff0c;增强了作为服务器的功能&#xff0c;弱化了作为终端系统的功能。   目前微软官方提供了 Windows 8 企业版&#xff08;90 天评估期&#xff09;和 Windows…

解决crontab 定时任务加载失败

0x0 系统&#xff1a;centos7内核&#xff1a;3.10.0-1160.15.2.el7.x86_64 今天用crontab创建定时任务&#xff0c;在测试时发现任务并没有按预期执行&#xff0c; 使用systemctl status crond 查看crond的状态 > # systemctl status crond …

Java高级 —— 泛型

目录泛型概念泛型可设置多个类型参数泛型继承泛型接口限制泛型可用类型泛型通配声明泛型方法泛型方法限制泛型可用类型泛型概念 问题引入&#xff1a;如果我们需要产生多个对象&#xff0c;每个对象的逻辑完全一样&#xff0c;只是对象内的成员啊变量的类型不同。那我们如何去…

python显示目录中的文件_Python中的文件和目录操作实现

Python中的文件和目录操作实现对于文件和目录的处理&#xff0c;虽然可以通过操作系统命令来完成&#xff0c;但是Python语言为了便于开发人员以编程的方式处理相关工作&#xff0c;提供了许多处理文件和目录的内置函数。重要的是&#xff0c;这些函数无论是在Unix、Windows还是…

wopihost

项目介绍 基于wopi协议开发的WopiHost, 支持word, excel&#xff0c;ppt(仅支持预览)等文档的预览和编辑。 运行环境 需要安装Office online 2016才可以使用&#xff0c;基于jdk 1.8&#xff0c;spring boot开发。 使用案例 word文档预览 http://[owas.domain]/wv/wordviewerfr…

java 人物属性

写代码&#xff0c;可以浏览人物的属性&#xff1a;package day14; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JComboBox; im…

龙芯3a4000 交叉编译链接错误

0x0 交叉编译平台&#xff1a; amd ubuntu20交叉编译目标平台&#xff1a;LOONGSON 3A4000交叉编译器&#xff1a;7.3.1 在编译时出现如下报错&#xff1a; mips-linux-gnu-ld -r -Lmips-loongson3a-app-gcc/lib -o octeontx_fpavf.o.o octeontx_fpavf.o.pmd.o octeontx_fp…

安卓APP_ Fragment(5)—— Fragment + ViewPager2 模拟微信首页 (2)两者联动翻页

摘自&#xff1a;安卓APP_ Fragment&#xff08;5&#xff09;—— Fragment ViewPager2 模拟微信首页 &#xff08;2&#xff09;两者联动实现翻页 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-22 00:11:43 网址&#xff1a;https://blog.csdn.net/weixin_4474…

stmmac描述符的结构和初始化

stmmac 描述符&#xff08;Descriptors&#xff09; stmmac的描述符有两个个模式&#xff0c;分别是ring模式和chain模式&#xff0c;根据特性的不同支持&#xff0c;描述符又有以下3个形式norm、Alternate 、 Enhanced。下面主要讲下ring模式下的Enhanced描述符结构&#xff…

Android中利用productFlavors配置多渠道

build.gradle(app)设置 android {flavorDimensions "default"productFlavors{//不同渠道360{dimension "default"//替换AndroidManifest中的值manifestPlaceholders [channel_value:"360"]}qq{dimension "default"//替换AndroidManif…

Ubuntu服务器安装snmpd(用于监控宝)

2019独角兽企业重金招聘Python工程师标准>>> 一、安装snmpd&#xff1a; sudo apt-get install snmpd 二、修改配置文件 vi /etc/snmp/snmpd.conf 找到这样的两行 agentAddress udp:127.0.0.1:161 #agentAddress udp:161,udp6:[::1]:161 将他们的注释交换一下 #…

安卓APP_ 四大基本组件(1)—— Activity

摘自&#xff1a;安卓APP_ 四大基本组件&#xff08;1&#xff09;—— Activity 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-22 15:56:18 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/116006048 配合菜鸟教程食用效果更佳&#xf…

bootdefault和configuration_springboot常用注解、包引入和自动配置功能解读

springboot使用起来确实很方便&#xff0c;做到开箱即用&#xff0c;减少了许多繁琐的配置。不过在使用过程中时常会想&#xff0c;为啥会这样方便&#xff0c;springboot为我们做哪些工作。或者是我们在使用的过程中&#xff0c;会遇到springboot不满足的情况&#xff0c;我们…

radare2 常用操作总结

radare2 简介 radare2是一个用C语言编写的跨平台的二进制分析工具&#xff0c;支持ARM、MIPS、X86等平台&#xff0c;支持分析多种格式的二进制文件如ELF、Mach-O、Fatmach-O, PE、PE、 MZ、 COFF等&#xff0c;同时也支持多种操作系统如Windows (since XP)、GNU/Linux、GNU/D…

Could NOT find SDL_image (missing:SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS)

sudo apt-get install libsdl-image1.2-dev转载于:https://www.cnblogs.com/sea-stream/p/9792496.html

Erlang TCP Socket的接收进程的2种方案

转自&#xff1a;http://blog.csdn.net/summerhust/article/details/8740973 一旦打开了一个使用&#xff34;&#xff23;&#xff30;连接的套接字&#xff0c;它就始终保持打开状态&#xff0c;直至任何一方关闭它或因为一个错误而终止。在建立一个连接时&#xff0c;一般为…

序列化与反序列化(1)Serializable —— Java原生态方法

摘自&#xff1a;序列化与反序列化&#xff08;1&#xff09;Serializable —— Java原生态方法 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-05-08 19:20:21 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/116503261 本文为学习笔记&…

极路由4刷机

准备工作 https://www.right.com.cn/forum/thread-161906-1-1.html https://breed.hackpascal.net/ 在第二个链接里下载路由器对应的breed固件&#xff0c;固件的说明见第一个链接&#xff0c;下文以极路由4为例演示 由于极路由官方挂了&#xff0c;无法进行root&#xff0…