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

java自学阶段一:基础知识学习

《项目案例—黑马tlias智能学习辅助系统》
目录:

  1. 异常

一:学习目标:

  1. 异常:能够看懂异常信息,了解异常体系结构和分类,掌握异常的两种处理方式,自定义异常。

二、异常:
1.异常的概念:语法错误其实不是异常。
2.异常的分类:
在这里插入图片描述
注意:RuntimeException是指运行的时候可能就会出现报错,不一定会。但是对待这样的情况,我们是需要处理的

3.异常的处理流程:
在这里插入图片描述

异常的处理方式:(看问题怎么看待,如果希望处理,那就用try…catch;如果需要暴露出来,告诉外界这是你们的操作失误,那就用throw往外抛;)
1)使用try:对可能出现的地方,设置另外的执行方案
在这里插入图片描述
2)throws 往外抛
在这里插入图片描述
注意:在Java中,throw和throws都是用于处理异常的关键字。这里还有一个throw的使用,其实也是往外抛异常,但是throw直接在方法体里,预知到了,然后直接往外抛给调用者(抛给用户),throws是定义在方法上的,方便别人查看、调用,知道可能会抛出什么异常,然后你调了,就得处理

,但它们在使用和上下文中有明显的区别。throwthrow用于在方法体中显式地抛出一个异常。
当throw语句被执行时,它会立即终止当前方法的执行,并将控制权转移到最近的能够处理该异常的异常处理器(catch块)。
如果该异常没有被捕获,那么它将被传递给调用者,以此类推,直到被捕获或到达程序的顶层(此时程序将终止)。
throw后面必须跟一个具体的异常对象。
throws:
throws用于声明一个方法可能抛出的异常,但并不在方法体中抛出这个异常。
使用throws关键字可以在方法的签名中声明一个或多个异常,这样调用者就知道需要处理哪些类型的异常。
如果一个方法使用了throws来声明它可能抛出的异常,那么调用该方法的代码要么必须处理这些异常(使用try-catch块),要么它本身也必须声明这些异常(使用throws)。
使用throw的异常示例:
java
public class ExampleWithThrow {     public static void main(String[] args) {  try {  // 调用一个可能会抛出异常的方法  performOperation();  } catch (ArithmeticException e) {  // 处理ArithmeticException异常  System.out.println("捕获到算术异常: " + e.getMessage());  }  }  public static void performOperation() {  int a = 10;  int b = 0;  // 使用throw显式地抛出一个异常  if (b == 0) {  throw new ArithmeticException("除数不能为零");  }   // 如果b不为零,则执行除法操作  int result = a / b;  System.out.println("结果是: " + result);  }  
}
在这个示例中,performOperation方法使用throw关键字显式地抛出了一个ArithmeticException异常。当b为0时,这个异常会被抛出,并在main方法中的try-catch块中被捕获和处理。

相关文章:

  • 【Qt之·类QCoreApplication】
  • Python - 字典(无序、复制)
  • 尝试编译 AMD ROCm 的 llvm-project
  • 数学建模 —— 层次分析法(2)
  • 新项目来了,JDK 17和JDK 21 该如何选择?
  • 浅谈JavaScript中的对象赋值
  • LabVIEW中PID控制器系统的噪声与扰动抑制策略
  • 扫码报名活动时,如何避免重复报名?
  • Java18新特性有哪些
  • Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
  • LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现
  • Unity中的MVC框架
  • C++ lambda表达式的作用和代码示例
  • autodl服务器中YOLOx训练自己数据集
  • 人脸识别系统之动态人脸识别
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • Python中eval与exec的使用及区别
  • ubuntu 下nginx安装 并支持https协议
  • ViewService——一种保证客户端与服务端同步的方法
  • vue.js框架原理浅析
  • vue-loader 源码解析系列之 selector
  • 测试如何在敏捷团队中工作?
  • 翻译:Hystrix - How To Use
  • 机器学习 vs. 深度学习
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 力扣(LeetCode)21
  • 区块链分支循环
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深度解析利用ES6进行Promise封装总结
  • 时间复杂度与空间复杂度分析
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 我的zsh配置, 2019最新方案
  •  一套莫尔斯电报听写、翻译系统
  • Spring第一个helloWorld
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 整理一些计算机基础知识!
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​浅谈 Linux 中的 core dump 分析方法
  • # Kafka_深入探秘者(2):kafka 生产者
  • #include到底该写在哪
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $(function(){})与(function($){....})(jQuery)的区别
  • (12)Linux 常见的三种进程状态
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (面试必看!)锁策略
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决