Android java基础_异常

一.异常的概念

在Java中,异常(Exception)是指程序执行过程中可能出现的不正常情况或错误。它是一个事件,它会干扰程序的正常执行流程,并可能导致程序出现错误或崩溃。

异常在Java中是以对象的形式表示的,这些对象是从java.lang.Throwable类或其子类派生而来。Throwable是异常类层次结构的根类,它有两个主要的子类:java.lang.Exception和java.lang.Error。

Exception(异常):java.lang.Exception是表示可检查异常的基类。可检查异常是指在编译时需要显式处理的异常。Exception类及其子类用于表示程序运行过程中可能出现的外部条件、错误或其他可恢复的情况。例如,文件未找到、网络连接中断、输入格式错误等。开发人员需要通过捕获或声明这些异常来确保在程序中进行适当的异常处理。

Error(错误):java.lang.Error是表示严重问题或系统级错误的基类。错误是指那些程序通常无法处理或恢复的情况,例如内存溢出、堆栈溢出、虚拟机错误等。与异常不同,错误不需要在程序中显式处理,因为它们通常表示了无法解决的问题。

异常在Java中通过抛出(throw)和捕获(catch)的方式进行处理。当程序执行到可能引发异常的代码时,可以使用throw语句手动抛出异常对象。然后,可以使用try-catch语句块来捕获异常,并在catch块中提供相应的异常处理逻辑。在catch块中,可以根据异常的类型执行适当的操作,如日志记录、错误报告或异常处理。如果异常没有在当前方法中被捕获处理,它将继续向上级调用栈传播,直到找到合适的异常处理代码或导致程序终止。

二.未进行异常处理

未进行异常处理的程序:

/* java Div 6 2* 6/2=3*/public class Div {public static void main(String args[]) {int m = Integer.parseInt(args[0]);int n = Integer.parseInt(args[1]);System.out.println("Begin of div");int r = div(m, n);System.out.println("End of div");System.out.println(m+"/"+n+"="+r);}public static int div(int m, int n) {int r = m / n;return r;}
}

没有进行异常处理,编译运行结果: 程序退出

root@ubuntu:/home/topeet/guyilian# javac Div.java 
root@ubuntu:/home/topeet/guyilian# java Div 6 3
Begin of div
End of div
6/3=2
root@ubuntu:/home/topeet/guyilian# java Div 6 0
Begin of div
Exception in thread "main" java.lang.ArithmeticException: / by zeroat Div.div(Div.java:22)at Div.main(Div.java:14)
root@ubuntu:/home/topeet/guyilian# 

三.异常处理

使用try-catch语句进行异常处理:

/* java Div 6 2* 6/2=3*/public class Div2 {public static void main(String args[]) {int m = Integer.parseInt(args[0]);int n = Integer.parseInt(args[1]);System.out.println("Begin of div");int r = div(m, n);System.out.println("End of div");System.out.println(m+"/"+n+"="+r);}public static int div(int m, int n) {int r = 0;try {r = m / n;} catch (ArithmeticException e) {System.out.println(e);} finally {System.out.println("this is finally of div");}return r;}
}
root@ubuntu:/home/topeet/guyilian# javac Div2.java 
root@ubuntu:/home/topeet/guyilian# java Div2 6 3
Begin of div
this is finally of div
End of div
6/3=2
root@ubuntu:/home/topeet/guyilian# java Div2 6 0
Begin of div
java.lang.ArithmeticException: / by zero
this is finally of div
End of div
6/0=0

使用抛出(throw)处理异常:

/* java Div 6 2* 6/2=3*/public class Div4 {public static void main(String args[]) {int m = Integer.parseInt(args[0]);int n = Integer.parseInt(args[1]);int r = 0;System.out.println("Begin of div");try {r = div(m, n);} catch (ArithmeticException e) {System.out.println(e);}System.out.println("End of div");System.out.println(m+"/"+n+"="+r);}public static int div(int m, int n) throws ArithmeticException {int r = 0;r = m / n;return r;}
}

运行结果: 

root@ubuntu:/home/topeet/guyilian# javac Div4.java 
root@ubuntu:/home/topeet/guyilian# java Div4 6 3
Begin of div
End of div
6/3=2
root@ubuntu:/home/topeet/guyilian# java Div4 6 0
Begin of div
java.lang.ArithmeticException: / by zero
End of div
6/0=0

可以有多个catch语句捕获不同的异常:

/* java Div 6 2* 6/2=3*/public class Div7 {public static void main(String args[]) {int m = 0;int n = 0;int r = 0;System.out.println("Begin of div");try {m = Integer.parseInt(args[0]);n = Integer.parseInt(args[1]);r = div(m, n);} catch (ArithmeticException e) {System.out.println("main :"+e);} catch (NumberFormatException e) {System.out.println("main :"+e);} catch (RuntimeException e) {System.out.println("main :"+e);}System.out.println("End of div");System.out.println(m+"/"+n+"="+r);}public static int div(int m, int n) throws ArithmeticException {int r = 0;try {r = m / n;} catch (ArithmeticException e) {System.out.println("div :"+e);throw e;}return r;}
}

运行: 

root@ubuntu:/home/topeet/guyilian# javac Div7.java 
root@ubuntu:/home/topeet/guyilian# java Div7 6 2
Begin of div
End of div
6/2=3
root@ubuntu:/home/topeet/guyilian# java Div7 6 0
Begin of div
div :java.lang.ArithmeticException: / by zero
main :java.lang.ArithmeticException: / by zero
End of div
6/0=0

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

数据加密规范的重要性

数据加密规范是为了保护数据的机密性、完整性和可用性而制定的一系列标准和操作流程。随着信息技术的快速发展,数据已成为企业和组织的核心资产,因此,数据加密变得至关重要。下面将详细介绍数据加密规范的重要性和实施要点。 一、数据加密规范…

MWC 2024丨美格智能发布全新5G-A模组及FWA解决方案,将5.5G带入现实

2月26日,在MWC 2024世界移动通信大会上,美格智能正式宣布推出5G-A模组SRM817WE以及全新的5G-A FWA解决方案,包含5G-A CPE解决方案SRT858M、5G-A MiFi解决方案SRT878H和5G-A ODU解决方案SRT853MX,旨在进一步提升网络性能&#xff0…

CUDA编程 - 用向量化访存优化 - Cuda elementwise - Add(逐点相加)- 学习记录

Cuda elementwise - Add 一、简介1.1、ElementWise Add1.2、 float4 - 向量化访存 二、实践2.1、如何使用向量化访存2.1、简单的逐点相加核函数2.2、ElementWise Add float4(向量化访存)2.3、完整代码 一、简介 1.1、ElementWise Add Element-wise 操作…

ref()和reactive()

setup(){} ref() 声明响应式状态,ref() 接收参数,并将其包裹在一个带有 .value 属性的 ref 对象中返回,要在组件模板中访问 ref,从组件的 setup() 函数中声明并返回它们。 ref 的好处是,与普通变量不同&#xff0c…

画板CHECK-检测

一, 检查组件是否会压住板上的组件. LBXR20会压住板上的组件. 会压住431管子.431的5V上下电阻要在.用三极管降压到5V时, 记得记得431的输出要放在电容的前面才可以增加反馈的时间.插件的丝印方面或贴片的丝印方面要注意正确,一般都是向外的,今天换那个new-609时,昨天晚上发出的…

【Web】CTFSHOW XXE刷题记录(全)

目录 web373 web374 web375 web376 web377 web378 前置知识先看这篇文章&#xff1a;XXE漏洞学习 用的多的就是外部实体声明和参数实体声明 web373 有回显的xxe <!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///flag"> ]> <z3r4y> <ct…

C# 学习第二弹

一、变量 存储区&#xff08;内存&#xff09;中的一个存储单元 &#xff08;一&#xff09;变量的声明和初始化 1、声明变量——根据类型分配空间 ①声明变量的方式 —变量类型 变量名 数值&#xff1b; —变量类型 变量名&#xff1b; 变量名 数值&#xff1b; —变…

IP 电话

1 IP 电话概述 IP 电话是在互联网上传送多媒体信息。 多个英文同义词&#xff1a; VoIP (Voice over IP) Internet Telephony VON (Voice On the Net) 1.1 狭义的和广义的 IP 电话 狭义的 IP 电话&#xff1a;指在 IP 网络上打电话。 广义的 IP 电话&#xff1a;不仅仅是…

智慧公厕让社区生活更美好

随着科技的迅猛发展&#xff0c;城市管理、城市服务均使用科技化的手段进行升级改造&#xff0c;社区生活更美好赋予全新的智慧效能&#xff0c;其中智慧公厕也成为了城市环卫设施的新宠。智慧公厕以物联网、互联网、大数据、云计算、5G通信、自动化控制等技术为核心&#xff0…

【mysql】 1819 - Your password does not satisfy the current policy requirements

创建mysql账户密码时候提示&#xff1a; 1819 - Your password does not satisfy the current policy requirements 1819-您的密码不符合当前策略要求 下面是执行的sql DROP DATABASE IF EXISTS company;CREATE DATABASE company CHARACTER SET utf8mb4 ;grant all on com…

大语言模型推理加速技术:计算加速篇

原文&#xff1a;大语言模型推理加速技术&#xff1a;计算加速篇 - 知乎 目录 简介 Transformer和Attention 瓶颈 优化目标 计算加速 计算侧优化 KVCache Kernel优化和算子融合 分布式推理 内存IO优化 Flash Attention Flash Decoding Continuous Batching Page…

thinkphp6定时任务

这里主要是教没有用过定时任务没有头绪的朋友, 定时任务可以处理一些定时备份数据库等一系列操作, 具体根据自己的业务逻辑进行更改 直接上代码 首先, 是先在 tp 中的 command 方法中声明, 如果没有就自己新建一个, 代码如下 然后就是写你的业务逻辑 执行定时任务 方法写好了…

降压型DC电源模块的特点与优势

BOSHIDA 降压型DC电源模块的特点与优势 降压型DC电源模块是一种将输入电压降低到需要的输出电压的电源模块。其特点与优势如下&#xff1a; 1. 输入电压范围广泛&#xff1a;降压型DC电源模块可以适应不同的输入电压范围&#xff0c;可以在不同的电压环境下使用。 2. 输出电…

YOLOv9图像标注和格式转换

一、软件安装 labelimg安装&#xff08;anaconda&#xff09; 方法一、 pip install labelImg 方法二、 pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install lxml -i ht…

前后端项目宝塔linux部署(springboot,vue,python)

宝塔linux安装就省略了&#xff0c;网上一堆 1.部署后端 1.首先把自己项目里面打包好的的jar包上传到服务器随便一个地方&#xff0c;我这里就上传到www/wwwroot下面了&#xff0c;宝塔的文件页面可以很便携上传 2.然后到下面这个页面 选那个java环境管理装个jdk&#xff…

2024022601-数据库语言SQL

数据库语言SQL SQL的发展 1974年&#xff0c;由Boyce和Chamberlin提出 1975~1979&#xff0c;IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言 SQL-86是第一个SQL标准 SQL-89、SQL-92(SQL2)、SQL-99(SQL3) 非过程化语言 SQL语言进行数据库操作…

Java数据结构---初识集合框架

目录 一、什么是集合框架 二、集合框架的重要性 三、背后涉及的数据结构及算法 1.什么是数据结构 2.容器背后对应的数据结构 3.相关的Java知识 4.什么是算法 一、什么是集合框架 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器 container &#xff0…

详解顺序结构滑动窗口处理算法

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

python Matplotlib Tkinter-->tab切换2

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.ttk as ttk# 创建自定义工具栏类 c…

nginx---------------重写功能 防盗链 代理 (五)

一、重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求&#xff0c;此功能依靠 PCRE(perl compatible regular expression)&#xff0c;因此编译之前要安装PCRE库&#xff0c;rewrite是nginx服务器的重要功能之一&#xff0c;重写功能(…