当前位置: 首页 > news >正文

宁波做网站优化价格/长沙seo搜索

宁波做网站优化价格,长沙seo搜索,做短视频网站用哪家cms,wordpress 发布html目录 异常: 异常处理方法: 1.异常基本语法: 2.try -catch 异常处理方法 3.使用异常共同的父类Exception来捕获异常, 4.关于异常的错误输出 5.finally代码块, 6.关于异常的调用链 7.JDK新增的自动关闭接口 8.…

目录


异常:

异常处理方法:

1.异常基本语法:

2.try  -catch 异常处理方法

3.使用异常共同的父类Exception来捕获异常,

4.关于异常的错误输出

5.finally代码块,

6.关于异常的调用链

7.JDK新增的自动关闭接口

8.一组关键字

throws:

throw:

异常体系:

Java的异常体系分为两大类

非受查异常:

受查异常:

自定义异常类:

举例:


异常:

        运行时抛出的程序错误,编译出错不属于此处异常
      (报错的包名.类名.方法名称的那一行)第一个出现报错的位置就是程序最开始出错的位置
常见的有:除零异常,*空指针异常,数组越界异常。
***异常出错,异常之后的语句都不执行。
 

异常处理方法:

LBYL :   在操作之前,做好检查
EAFP:先运行,出错再解决(java采用的方式)
 

1.异常基本语法:

try{ 
//存放所有可能出现异常的代码
} [ catch( 捕获相应的异常)…[0…N]]{
// 出现相应异常后处理方式
}[finally]{
// 不是强制要求写
// 无论是否发生异常,都会执行finally代码块,一般进行资源的释放
//关闭资源操作
}

2.try  -catch 异常处理方法

int[] arr = {10,20,30};
try {arr = null;System.out.println(arr[3]);
} catch (ArrayIndexOutOfBoundsException e) {System.out.println("数组下标异常!");
} catch (NullPointerException e) {System.out.println("空指针异常");
}
System.out.println("arr[1]");

3.使用异常共同的父类Exception来捕获异常,

使用场景:当程序出现多种异常,且有的异常编程时也不太清楚-不太推荐
(一般明确知道会产生那种异常,就捕获相应的异常即可,这样方便排查问题)
try{
}catch(Exception e){
}

4.关于异常的错误输出

        在java中,一切皆对象,异常也是对象,上边的空指针等,都是异常类
当产生错误时,JVM都会建立相应的异常对象传递给程序
利用e.printStackTrace();可以让程序打印出异常位置(这里是自己让程序打印出的,而不是系统报出)

5.finally代码块,

定义:无论是否产生异常,都执行
        当try代码块中,某一行语句出现异常,那么该代码块中异常之后的语句将不执行,直接跳出,如果你想无论异常是否产生都想执行一个语句,则可以放到finally代码块中。
        通过尝试运行可以发现,无论异常是否发生,finally代码块中的内容一定会执行。那么可以将资源关闭操作等重要操作,放在finally 最终代码块中善后处理
//File是Java中文件操作类
File file = new File("src/java19_1_21/test.txt");
//输入不是键盘输入,是将文件输入到Scanner类中
Scanner scanner = null;
try {scanner = new Scanner(file);System.out.println("文件正确加载完毕");
} catch (FileNotFoundException e) {System.out.println("文件不存在!");e.printStackTrace();
} finally {//最后处理的一些代码System.out.println("文件正常处理完毕”);
}
        能走到finally说明在try-catch中的逻辑已经处理完毕,只剩finally的最后处理操作。
        一旦finally中有返回值,try-catchzh返回值就失效了,一般在finally中不推荐写返回值,除非返回值和异常无关,默认返回值可放在finally中。

6.关于异常的调用链

        异常会随着调用链不断向上传递,直到有一处捕获异常并处理为止,若调用过程都没有处理异常,最终会将异常抛到JVM,程序就终止了

7.JDK新增的自动关闭接口

        一旦一个类实现了AutoCloseable借口,就表示该类具备了自动关闭的能力-声明在try代码块中会自动调用close方法
在try(此处自动关闭调用){  }

8.一组关键字

throws:

        (一般搭配自定义异常使用)用在方法声明上,明确表示该方法有可能会产生该异常,但是不处理此异常,抛回给调用者处理(谁调用谁处理)
public static void main(String[] args) {try{test();}catch(NullPointerException e) {System.out.println("捕获空指针异常!");e.printStackTrace();}
}
// 调用test方法有可能会产生空指针异常,但是test方法不处理此异常,谁调用谁处理
public static void test() throws NullPointerException,ArrayIndexOutOfBoundsException{String str = null;System.out.println(str.length());
}

throw:

        用在方法内部人为产生异常对象并抛出(之后数据结构的学习,自己在写栈等结构时,若栈为空,调用取出栈元素方法可以使用throw自定义异常)
public static void main(String[] args) {fun();System.out.println("fun之后的代码");}public static void fun(){throw new NullPointerException("抛个异常玩玩");//抛出异常后,方法就会结束}

异常体系:

Error:

        指的是程序的内部错误,这种错误程序猿无法捕获,一旦发生,程序只能告知用户出现错误,程序直接退出
StackOverflowError:栈溢出Error-一般中发生在递归调用链太深,递归没有出口
OutOfMemoryError:堆溢出Error

Exception:(java我们关注这个错误)

Java的异常体系分为两大类

非受查异常:

        不强制程序使用try-catch代码块
        Error以及RuntimeException(运行时异常,空指针,类型转换数组越界)及其子类都是

受查异常:

        必须显示使用try-catch处理
        除了上边的,必须显示处理,必须显示使用try-catch异常处理,或者throws抛出
        除了Error和RuntimeException以及其子类的其他异常都是受查异常,必须显示处理  
(受查就是不处理异常,编译不通过。而非受查不处理异常也可以编译通过)

自定义异常类:

        程序开发中,一定会有一些错误是和具体的业务相关的,这种错误JDK是不可能提供相应的异常类,此时就需要继承已有异常类,产生自定义异常类
若需要用户强制进行异常处理,继承Exception父类-受查异常
若不需要显示处理异常,继承RuntimeException父类-非受查异常

举例:

模拟用户登录
import java.util.Scanner;//自定义类模拟登录
public class LoginTest {public static final String ID = "huweilong";public static final String PASSWORD = "123456";public static void main(String[] args) {try {login();System.out.println("登录成功!");} catch (UserNameException e) {e.printStackTrace();} catch (PasswordException e) {e.printStackTrace();}}public static void login() {Scanner scanner = new Scanner(System.in);System.out.print("请输入用户名:");String id = scanner.next();System.out.print("请输入密码:");String password = scanner.next();if (!id.equals(ID)) {throw new UserNameException("用户名错误!");}if (!password.equals(PASSWORD)) {throw new PasswordException("密码错误!");}}
}//用户名验证
class UserNameException extends RuntimeException {public UserNameException(String msg) {super(msg);}
}//密码验证
class PasswordException extends RuntimeException {public PasswordException(String msg) {super(msg);}
}

 
http://www.lbrq.cn/news/840025.html

相关文章:

  • 为企业做贡献/淘宝seo是什么意思啊
  • 广东深圳疫情/谷歌网站优化
  • 网站建设工程师 html5/草根seo视频大全网站
  • 不用下载直接浏览的网站/济南网站推广优化
  • 可以免费做演播的听书网站/seddog站长之家
  • wordpress更改固定链接404/青岛网站seo
  • 大同市人民政府门户网官网/昆明seo技术培训
  • wordpress建站网站报错/网络营销方法有几种类型
  • 南山区做网站公司/游戏推广员是做什么的
  • 苏州 网站建设/广告宣传语
  • 网站代理什么意思/城关网站seo
  • 厦门做网站/中国十大经典广告
  • 宜昌做网站的公司/河北seo推广方案
  • 怎么用自己的电脑做网站/今日搜索排行榜
  • 建设网站广州/百度极速版下载安装最新版
  • 北京通州做网站/关键词全网搜索
  • 登录建设银行网站打不开/专业做加盟推广的公司
  • 上海市虹口市容建设公司网站/网站网络排名优化方法
  • 网站建设新方向/长沙网络推广软件
  • 信息流投放平台/长沙做优化的公司
  • 海口市网站建设/北京seo招聘网
  • 网站做淘宝客有什么要求/怎么优化关键词排名优化
  • 网站的特效代码/在线代理浏览网站
  • java做网站的软件6/网络营销的方法有哪些
  • wordpress mysql php/如何优化网络速度
  • 常用wap网站开发工具 手机网站制作软件/seo网站优化怎么做
  • 外贸营销型建站/seo一个关键词多少钱
  • 济南做外贸网站的公司/成都市seo网站公司
  • 中国建设银行报网站/免费的推广软件下载
  • 代码做网站常用单词/免费有效的推广平台
  • Python高级编程技巧探讨:装饰器、Patch与语法糖详解
  • 从零开发足球比分APP:REST API与WebSocket的完美搭配
  • SupMotion 云迁移数据工具实现原理(上)
  • 个人笔记(linux/sort与uniq命令)
  • 从零开始的云计算生活——番外4,使用 Keepalived 实现 MySQL 高可用
  • RAG优化秘籍:基于Tablestore的知识库答疑系统架构设计