c++ raiseexception产生异常_Day17_异常,线程

《Java自学180天笔记》

异常分类

package demo3;/*java.lang.Throwable:类是Java语言中所有错误或异常的超类。   Exception:编译期异常,进行编译(写代码)java程序出现的问题        RuntimeException:运行期异常,java程序运行过程中出现的问题        异常就相当于程序得了一个小毛病,把异常处理掉,程序可以继续执行    Error:错误        错误就相当于程序得了一个无法治愈的毛病,必须修改源代码,程序才能继续执行 */public class DemoException {    public static void main(String[] args) {    }}

异常的产生过程解析

b8f668c0b0dedaeb4c7e8c99679efdb0.png

throw关键字

package demo3;/*throw关键字作用:   可以使用throw关键字在指定的方法中抛出指定的异常使用格式:   throw new xxxException("异常产生的原因");注意:   1.throw关键字必须写在方法的内部    2.throw关键字后边new的对象必须是Exception或者Exception的子类对象    3.throw关键字抛出指定异常对象,我们就必须处理这个异常对象        throw关键字后面创建的是RuntimeException或者RuntimeException的子类对象,我们可以不处理,        默认交给JVM处理(打印异常对象,中断程序)        throw关键字后面创建的是编译异常(写代码的时候报错),我们就必须处理这个异常,要么throws,        要么try...catch */public class DemoThrow {    public static void main(String[] args) {    }}

throws关键字_异常处理的第一种方式,交给别人处理

package demo3;import java.io.FileNotFoundException;import java.io.IOException;/*throws关键字:异常处理的第一种方式,交给别人处理作用:   当方法内部抛出异常对象的时候,那么我们就必须处理这个异常对象    可以使用throws关键字处理异常对象,会把异常对象声明抛出给方法的调用者处理    (自己不处理,给别人处理),最终交给JVM处理-->中断处理使用格式:在方法声明时使用    修饰符 返回值类型 方法名(参数列表)throws AAAException,BBBException...{        throw new AAAException("产生原因")        throw new BBBException("产生原因")        ...    }注意:   1.throws关键字必须写在方法声明处    2.throws关键字后边声明的异常必须是Exception或者Exception的子类    3.方法内部如果抛出了多个异常对象,那么throws后边必须也声明多个异常        如果抛出多个异常对象有父子关系,那么 直接声明父类异常即可    4.调用一个声明抛出异常的方法,我们就必须的处理声明的异常        要么继续使用throws声明抛出,交给方法的调用者算是,最终交给JVM        要么try...catch自己处理异常 */public class DemoThrows {    /*    FileNotFoundException extends IOException extends Exception    如果抛出的多个异常对象有父子类关系,那么直接声明父类异常即可。    */    public static void main(String[] args) throws FileNotFoundException,IOException {        readFile("c:\\a.txt");    }    /*    定义一个谅,对传递的方便路径进行合法性判断    如果路径不是"c:\\a.txt",那么我们就抛出文件找不到异常对象,告知方法的调用者    注意:       FileNotFoundException是编译异常,抛出了编译异常,就必须处理这个异常        可以使用throws继续声明抛出FileNotFoundException这个异常对象,让方法的调用者处理     */    public static void readFile(String fileName) throws FileNotFoundException,IOException {        if(!fileName.equals("c:\\a.txt")){            throw new IOException("文件的后缀名不对");        }        /*        如果传递的路径,不是.txt结尾        那么 我们就抛出IO异常对象,告知方法的调用者,文件的后缀名不对         */        if(!fileName.endsWith(".txt")){            throw new FileNotFoundException("传递的文件路径不是c:\\a.txt");        }        System.out.println("路径没有问题,读取文件");    }}

throws关键字_异常处理的第一种方式,自己处理异常

package demo3;/*try...catch:异常处理的第二种方式,自己处理异常格式:   try{        可能产生异常的代码    }catch(定义一个异常的变量,用来接收try中抛出的异常对象){        异常处理逻辑,异常对象之后,怎么处理异常对象        一般在工作中,会把异常的信息记录在一个日志中    }    ...    catch(异常类名 变量名){    }注意:   1.try中可能会抛出多个异常对象,那么就可以使用多个catch来处理这些异常对象    2.如果try中产生了异常,那么就会执行catch中异常处理逻辑,执行完毕catch中处理逻辑,    继续执行try...catch之后的代码    如果try中没有产生异常,那么就不会执行catch中异常的处理逻辑,执行完try中的代码,继续执行try...catch之后的代码 */public class DemoTryCatch {}

多异常的捕获处理

package demo3;import java.util.List;/*多个异常使用捕获又该如何处理呢?1.多个异常分别处理。2.多个异常一次捕获,多次处理。3.多个异常一次捕获,一次处理。*/public class Demo01Exception {}

自定义异常类

package demo4;/*自定义异常类:   java提供的异常类,不够我们使用,需要自己定义一些异常类格式:   public class xxxException extends Exception | RuntimeException{        添加一个空参数构造方法        添加一个带异常信息的构造方法    }注意:   1.自定义异常类一般都是以Exeption结尾,说明该类是一个异常类    2.自定义异常类,必须的继承Exception或者RuntimeException        继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,        就必须处理这个异常,要么throws,要么try...catch        继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理) */public class RegisterException extends Exception {    //添加一个空参数构造方法    public RegisterException(){        super();    }    /*添加一个带异常信息的构造方法查看源码发现,所有的异常类都会有一个带异常信息的构造方法,方法内部会调用父类带异常信息的构造方法,让父类来处理这个异常信息 */    public RegisterException(String message){        super(message);    }}

自定义异常类练习

package demo4;import java.util.Scanner;/*要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已被注册分析:   1.使用数组保存已注册过的用户名(数据库)    2.使用Scanner获取用户输入的注册用户名(前端,页面)    3.定义一个方法,对用户输入的注册名进行判断        遍历存储已注册过的用户名数组,获取每一个用户名        使用获取到的用户名和用户输入的用户名比较            true:                用户名已存在,抛出RegisterException异常,告知用户“亲,该用户名已被注册”;            false:                继续遍历比较            如果循环线束了,还没有找到重复的用户名,提示用户“恭喜您,注册成功”; */public class DemoRegisterException {    //1.使用数组保存已注册过的用户名(数据库)    static String[] usernames = {"聂卫平","古力","常昊"};    public static void main(String[] args) throws RegisterException {        //2.使用Scanner获取用户输入的注册用户名(前端,页面)        Scanner sc = new Scanner(System.in);        System.out.println("请输入您要注册的用户名");        String username = sc.next();        checkUsername(username);    }    //3.定义一个方法,对用户输入的注册名进行判断    public static void checkUsername(String username) throws RegisterException {        //遍历存储已注册过的用户名数组,获取每一个用户名        for(String name:usernames){            //使用获取到的用户名和用户输入的用户名比较            if(name.equals(username)){                //true:用户名已存在,抛出RegisterException异常,告知用户“亲,该用户名已被注册”;                throw new RegisterException("亲,该用户名已被注册");            }        }        System.out.println("恭喜您,注册成功");    }}

并发与并行

80b5d7c8ebb19df1a2e75f57e0c8eb90.png

进程概念

d8f0a12be14e83d7a6a2d481aa67c7df.png

线程概念

线程是进程中的一个执行单元,负责当前进行中程序的执行,一个进行中至少有一个线程。一个进程中是可以有多个线程,这个应用程序也可以称之为多线程程序。

712381b3753812d5a63ef9c2166a4c53.png

线程调度

分时调度

所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间

抢占式调度

优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。

主线程

package demo4;/*主线程:执行主(main)方法的线程单线程程序:java程序中只有一个线程执行从main方法开始,从上到下依次执行 */public class DemoMainThread {    public static void main(String[] args) {        Person p1 = new Person("小强");        p1.run();        Person p2 = new Person("旺财");        p2.run();    }}

创建多线程程序的第一种方式

package demo4;/*创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类实现步骤:   1.创建一个Thread类的子类    2.在Thread类的子类中重写Thread类中的run方法,设置线程任务(开启线程要做什么?)    3.创建Thread类的子类对象    4.调用Thread类中的方法,开启新的线程,执行run方法        void start() 使该线程开始执行;Java虚拟机调用该线程的run方法。       结果是两个线程并发地运行;当前线程(main线程)和另一个线程(创建的新线程,执行其run方法)        多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。java程序属于抢占式调度,哪个线程优先级高,哪个线程优先执行;同一个优先级,随机选择一个执行 */public class Demo01Thread {    public static void main(String[] args) {        //3.创建Thread类的子类对象        MyThread mt = new MyThread();        //4.调用Thread类中的方法,开启新的线程,执行run方法        mt.start();        for (int i = 0; i < 20; i++) {            System.out.println("main:"+i);        }    }}
package demo4;//1.创建一个Thread类的子类public class MyThread extends Thread {    //2.在Thread类的子类中重写Thread类中的run方法,设置线程任务(开启线程要做什么?)    @Override    public void run() {        for (int i = 0; i < 20; i++) {            System.out.println("run:"+i);        }    }}

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

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

相关文章

05_SpringCloud整合声明式HTTP客户端-Feign

SpringCloud整合声明式HTTP客户端-Feign 文章目录一、Feign介绍1. 什么是Feign&#xff1f;2. Feign组件&#xff1a;二、基于Feign实现微服务远程调用2.1. 引入feign依赖2.2. 启动类加EnableFeignClients注解2.3. 添加属性配置(暂无)2.4. 创建一个feign接口类2.5. 修改Ribbon调…

Jonathan Bryce说:OpenStack属于全世界,并不属于一个公司,也不会属于一个国家……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;“openstack这个软件是属于全世界的&#xff0c;并不属于一个公司&#xff0c;也不会属于一个国家。”这是OpenStack基金会创始人兼执行总监 Jonathan Bryce在访谈中一再强调的&#xff0c;也是让阿晶到如今依然记忆犹新的一句话。在…

html中给div设置的属性怎么样才能拿得到_前端基础高频面试题(更新中)

页面渲染的全过程输入url后&#xff0c;先拿到html文件&#xff0c;html下载完以后会开始对它进行解析html在解析的过程中&#xff0c;如果文本里有外部资源链接&#xff0c;比如css、js和img时&#xff0c;会立即启用其他线程下载这些静态资源。特殊的是当遇到js文件的时候&am…

怎么去除idea中代码的波浪线(黄色警告线)

windows中安装的idea中找到Preferences然后执行以下操作: 2.mac系统下的idea:为了减少一定量的重复代码&#xff0c;提醒开发人员注意&#xff0c;但是如果有时几行代码的重复没必要扔到一个统一的地方处理&#xff0c;这是总是提醒&#xff0c;干扰视线。这里根据个人习惯&am…

打脸!IEEE突然宣布解除对华为编辑和同行评审活动的限制;AWS 发生故障,因多处光缆被挖断,历经11小时完全修复……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 消失的台北电脑展&#xff0…

分布式mysql proxy_mysqlda: 基于核心业务对象切分的Proxy模式的分布式MySQL数据库中间件...

mysqlda - MySQL数据库中间件1. 概述1.1. 数据分布式切分方式分布式架构中最难解决的是数据分布式问题&#xff0c;大部分数据库中间件都以分库分表作为切分方式&#xff0c;好处是通用&#xff0c;但也存在以下问题&#xff1a;扩容过程需要以切片为单位在库间移动数据。扩容规…

企业级实战01_ActiveMQ 下载、安装、运行、实战需求

ActiveMQ 下载、安装、运行、实战需求 文章目录一、ActiveMQ简介1. 什么是ActiveMQ&#xff1f;2. ActiveMQ能干什么&#xff1f;3. ActiveMQ特点4. MOM基本功能5. MOM主要特点6. MOM的应用场景_前7. MOM的应用场景_后二、ActiveMQ下载/安装2.1 ActiveMQ下载2.2 ActiveMQ安装环…

刚出炉!AI指数报告:AI人才需求暴涨35倍,薪酬问鼎No.1

2017年~2018年&#xff0c;是人工智能大火的时候。你会发现&#xff0c;跟朋友聊天不谈人工智能&#xff0c;聊天的bigger都上不去。国家支持的朝阳行业&#xff0c;顶级高薪吸引&#xff0c;让甚至许多不是计算机出身的小白&#xff0c;都按捺不住&#xff0c;投身“学海”。而…

企业实战01_Linux下安装ActiveMQ并设置开机启动

文章目录一、MQ常用命令二、防火墙常用命令三、MQ安装3.1. 在root权限下操作&#xff0c;赋予目录权限3.2. 给运行程序赋予可执行权限3.3. 配置环境变量四、MQ添加开机启动4.1. 添加开机启动至初始化目录4.2. 添加MQ内容如下4.3. 将activemq添加至配置文件4.4. 查看服务是否添加…

SDN精华问答 | 使用SDN的一个例子

SDN火热了好一阵子&#xff0c;无论运营商、政府企业、投资机构&#xff0c;一段时间&#xff0c;不知道SDN、不能甩几个SDN相关的名词术语&#xff0c;似乎都落后于时代了。今天&#xff0c;就来看看关于SDN的精华问答吧。1Q&#xff1a;为什么会出现SDN呢&#xff1f; A&…

企业级实战02_SpringMVC整合ActiveMQ 实战需求

SpringMVC整合ActiveMQ 文章目录一、Spring整合ActiveMQ实战1.1. 创建一个父工程&#xff1a;1.2. 引入依赖1.3. 创建一个子项目生产者1.4. 创建一个spring配置文件4. 创建一个点对点的生产者监听5. 创建一个topic的生产者监听四、Spring整合ActiveMQ实战1. 创建一个消费者工程…

苹果WWDC前瞻之iOS 13更新最受关注;微软发布基于区块链的去中心化身份识别系统;小米成立了新集团质量办公室……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go SpaceX猎鹰9号火箭发射&…

企业级实战03_真实项目实战SpringMVC整合ActiveMQ

创建2个工程&#xff0c;生产者和消费者 测试点对点和广播发送常见类型的消息例如&#xff1a;文本(String)、对象(Object) 文本转Long String text “123”; Long.parseLong(text) 数组转集合 Arrays.toArray(list) 引入依赖 <?xml version"1.0" enco…

新一代私有云来了!看透基于开源生态的产品化

戳蓝字“CSDN云计算”关注我们哦&#xff01;文 | 易捷行云&#xff08;EasyStack&#xff09;创始人 陈喜伦来源 | 开源云中文社区进入云计算大时代&#xff0c;中大客户和产业互联网化是云计算的主战场&#xff0c;获取企业级客户是主旋律。对企业级客户来说以新一代私有云为…

mysql 用户管理表_mysql用户管理

msyql用户定义&#xff1a;使用某个用户 从哪个(些)地址访问我的数据库主机范围单独IP&#xff1a;10.0.0.200一个网段:10.0.0.% --->10.0.0.1-->10.0.0.254一个地址范围&#xff1a;10.0.0.5% ---->50-59用户的功能&#xff1a;1、用来登录mysql数据库2、用来管理数据…

8月有望推出5G套餐,资费或低于4G价格;为专利技术,华为5000万美元收购技术公司;AMD和三星宣布合作……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 宝宝树孕育APP新增即时交互功…

从数组随机抽取5个不重复_Power Query 如何保证随机抽取元素不重复

继续昨天的话题&#xff0c;昨天我们实现完全的随抽取列表元素&#xff0c;有一个问题就是可能几次会抽取同一个位置的元素&#xff1a;1-50中随机抽取5个数值&#xff0c;点击刷新&#xff0c;就会出现不同的结果&#xff0c;如上图可能会出现两个相同的数值&#xff0c;如何确…

vba上传指定文件ftp服务器

文章目录一、需求分析&#xff1a;二、操作流程&#xff1a;2.1 【开发工具】-【宏】2.2 【宏】-【编辑】2.3 【把脚本复制进去】2.4 脚本如下2.5 修改位置2.5.1 修改sheet名称和表格一致2.5.2 修改Cells(2,3)2.5.3 修改4 to 1002.5.4 修改Cells(i,3)2.5.5 修改发ftp信息2.5.6 …

云存储精华问答 | 云存储是如何工作的?

云存储是一种网上在线存储&#xff08;英语&#xff1a;Cloud storage&#xff09;的模式&#xff0c;即把数据存放在通常由第三方托管的多台虚拟服务器&#xff0c;而非专属的服务器上。今天就让我们来看看关于云陈存储的精华问答吧。1Q&#xff1a;云存储是如何分类的&#x…

mysql如何实现管理权限分离_基于SpringCloud+vue(ElementUI)+mySQL前后端分离设计之--搭建权限管理系统...

权限图&#xff1a;pom.xmlxsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0com.serverauthority0.0.1-SNAPSHOTjarauthorityauthority project for Spring Bootorg.springframework.bootspring-boot-s…