Exception 语句

上一篇的一元二次方程求根的例子,让我想起了一件事。一元二次方程求根的程序,如果遇到Delta<0,则无解,函数不能返回值。在这个例子中,print打印一条提示信息,然后在求平方根的过程中引发异常。这样处理,马马虎虎也算处理好了。例子详见,https://blog.csdn.net/aaasssdddd96/article/details/136867786

当然有些不满意的地方。因为在打印Delta<0的地方,已经知道计算要出问题了,但是不管,故意让程序执行下去,直到在内部真的引发一个异常。必然的。引发的时候又输出了一条信息。这信息微观上准确,宏观上可能让人迷惑。

所以,要不要引进明确的异常机制? 如果引进,怎么做?

明显的做法有2种。1是增加一个叫作exception()的内部函数。遇到Delta<0后,print打印一条提示信息,然后调用无参数的exception()触发异常,或者exception()接受一个提示信息做参数,这样就省下了print语句。

func Delta(a,b,c) 
{return b*b-4*a*c;
}func root(a, b, c, neg) 
{d= Delta(a,b,c);if(d<0) { print "Delta <0"; exception();}return (-b +(neg? -d**0.5: d**0.5))/(2*a);
}

这样做还是有些不满意。因为内部函数都统一有一个参数,采用无参数的exception()多了一个需要特殊处理的例外。而如果传一个字符串参数给exception(),也产生了一个需要特殊处理的例外, 因为所有的函数都只接受‘数’做参数,这里需要接受字符串参数。

所以,考虑第2种方法。引入Exception 语句。Exception 语句跟print语句是不是很像?这种方法只需要新增一个关键字,Exception。然后用它来代替print。Exception直接看成print。这样基本上没什么工作需要做了。当然print完成以后会自动引发一个Exception功能。遇到Exception后,后面的return 语句就不执行了。这里,稍微有点不满的是,跟C语言有了一点差别,C语言没有Exception语句。

func Delta(a,b,c) 
{return b*b-4*a*c;
}func root(a, b, c, neg) 
{d= Delta(a,b,c);if(d<0) { exception "Delta <0"; }return (-b +(neg? -d**0.5: d**0.5))/(2*a);
}

print语句可以容纳多个输出了。当然exception 也可以了。

...if (d<0) {exception a,"x**2 +",b,"x +", c,"= 0; Delta<0.";}

exception可以容纳多个输出。又如果exception的输出中调用的函数,表达式中又遇到异常会怎么样?exception的输出被打断,结果仍然是异常。

这样看,解释程序增加一个Exception功能并没有难度。简直太简单了。简单的简直不想动手去做。嗯!现在就偷个懒,以后真需要,就去做一下。

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

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

相关文章

【 yolo红外微小无人机-直升机-飞机-飞鸟目标检测】

yolo无人机-直升机-飞机-飞鸟目标检测 1. 小型旋翼无人机目标检测2. yolo红外微小无人机-直升机-飞机-飞鸟目标检测3. yolo细分类型飞机-鸟类-无人机检测4. yolo红外大尺度无人机检测5. 小型固定翼无人机检测6. 大型固定翼无人机检测7. yolo航空俯视场景下机场飞机检测 1. 小型…

Hive SQL必刷练习题:排列组合问题【通过join不等式】

排列组合问题【通过join不等式】 这种问题&#xff0c;就是数学的排列不等式&#xff0c;一个队伍只能和其余队伍比一次&#xff0c;不能重复 方法1&#xff1a;可以直接通过join&#xff0c;最后on是一个不等式【排列组合问题的解决方式】 方法2&#xff1a;也可以是提前多加…

IAB欧洲发布首张泛欧洲数字零售媒体能力矩阵图

2024年1月18日&#xff0c;互动广告署-欧洲办事处&#xff08;IAB Europe)发布了首张泛欧洲数字零售媒体能力矩阵图。为媒体买家提供的新资源概述了在欧洲运营的零售商提供的现场、场外和数字店内零售媒体广告机会。 2024年1月18日&#xff0c;比利时布鲁塞尔&#xff0c;欧洲领…

【深度学习】神经网络教程

文章目录 安装python环境熟悉Python安装torch 安装python环境 有解释器&#xff1a; 设置环境&#xff1a; 熟悉Python var1 1 # 整型 var2 1.1 # 浮点型 var3 1 2j # 复数 var4 hello # 字符串 var5 True # 布尔型 var6 [1, 2, 3] # 列表List var7 (1, 2, 3)…

PHP 读取嵌入式数据 SQLite3

SQLite3 属于轻量级开源的嵌入式关系型数据库&#xff0c;但它支持 ACID(Atomicity,Consistency,Isolation,Durability) 事务。 SQLite Download Page: https://www.sqlite.org/download.html 第一步&#xff1a;在 php.ini 中开启 extensionsqlite3 第二步&#xff1a;连接数…

保研复习概率论1

1.什么是随机试验&#xff08;random trial&#xff09;&#xff1f; 如果一个试验满足试验可以在相同的条件下重复进行、试验所有可能结果明确可知&#xff08;或者是可知这个范围&#xff09;、每一次试验前会出现哪个结果事先并不确定&#xff0c;那么试验称为随机试验。 …

Openharmony

OpenHarmony 是一个开源的、多设备分布式操作系统&#xff0c;由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营。它旨在提供跨多种设备的统一开发体验&#xff0c;支持一次开发&#xff0c;多端部署。OpenHarmony 的系统架构遵循分层设计原则&…

ubuntu22.04 安装wordpress搭建网站

在Ubuntu 22.04上安装WordPress并搭建网站的步骤如下&#xff1a; 更新系统包索引并升级所有安装的包&#xff1a; sudo apt update sudo apt upgrade -y 安装LAMP (Linux, Apache, MySQL, PHP) 栈&#xff1a; sudo apt install lamp-server^ -y 安装WordPress&#xff1a; …

JVM——运行时数据区

前言 由于JAVA程序是交由JVM执行的&#xff0c;所以我们所说的JAVA内存区域划分也是指的JVM内存区域划分&#xff0c;JAVA程序具体执行的过程如下图所示。首先Java源代码文件会被Java编译器编译为字节码文件&#xff0c;然后由JVM中的类加载器加载各个类的字节码文件&#xff0…

部标JT808车辆定位监控平台单服务器13.6万接入压力测试记录(附源码)

之前经常有人问平台能支持多少设备同时在线&#xff0c;由于事情多没时间做。最近刚好有机会做下压力测试。在不间断的连续压测三天&#xff0c;最终结果为13.6万TCP连接&#xff0c;30秒上报频率。 一、测试目的 测试平台同时接入设备数量与并发处理能力。 二、准备环境 一…

ubuntu arm qt 读取execl xls表格数据

一&#xff0c;ubuntu linux pc编译读取xls的库 1&#xff0c;安装libxls(读取xls文件 电脑版) 确保你已经安装了基本的编译工具&#xff0c;如gcc和make。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-update sudo apt-get install build-essentia…

principles and practices of interconnection networks. preface

preface 首先两个介绍章节&#xff0c;然后分为拓扑、路由、流量控制、路由器体系结构和性能五部分 第 1 章开始&#xff0c;描述什么是互连网络、如何使用它们、不同应用的性能要求以及如何选择拓扑结构。路由和流量控制就是为了满足这些要求。为了使这些概念具体化并激发本书…

FENet: Focusing Enhanced Network for Lane Detection 调试报错记录

FENet: Focusing Enhanced Network for Lane Detection 调试报错记录 github项目链接 问题1&#xff1a; 指令&#xff1a; (fenetv1) wssun:~$ python /home/ws/CoodWorkRun/FENet-v1/setup.py build develop报错 RuntimeError: The detected CUDA version (9.1) mismat…

前端学习之css media查询、自定义字体、过度动画、css变换、动画、渐变、多列、字体图标

media查询 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>media查询</title><!-- media查询&#xff1a;根据设备类型不同&#xff1a;比如说打印机、屏幕不同而产生不一样效果格式&#x…

Kubernetes kafka系列 | Strimzi 快速部署kafka集群 (可外部通信)

一、Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制器和操作符,使得在 Kubernetes 环境中轻松地部署、管理和操作 Kafka 集群成为可能。Strimzi 项…

STM32 CAN的位时序和波特率

STM32 CAN的位时序和波特率 位时序 STM32的CAN外设位时序中只包含3段&#xff0c;分别是同步段SYNC_SEG、位段BS1及位段BS2&#xff0c;采样点位于BS1及BS2段的交界处。其中SYNC_SEG段固定长度为1Tq&#xff0c;而BS1及BS2段可以在位时序寄存器CAN_BTR设置它们的时间长度&…

阿里云2核4G服务器优惠价格30元、165元和199元1年,轻量和ECS

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

基于深度学习YOLOv8+PyQt5的水底海底垃圾生物探测器检测识别系统(源码+数据集+配置说明)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;323海底 获取完整源码7000张数据集配置说明文件说明远程操作配置环境跑通程序 效果展示 基于深度学习YOLOv8PyQt5的水底海底垃圾生物探测器检测识别系统设计&#xff08;源码数据集配置文件&#xff09; 各文件说明 程序运…

Docker-Container

Docker ①什么是容器②为什么需要容器③容器的生命周期容器 OOM容器异常退出容器暂停 ④容器命令清单总览docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker container insp…

taro框架之taro-ui中AtSwipeAction的使用

题记&#xff1a;所需效果&#xff1a;滑动删除 工作进程 官网文档代码 <AtSwipeAction options{[{text: 取消,style: {backgroundColor: #6190E8}},{text: 确认,style: {backgroundColor: #FF4949}} ]}><View classNamenormal>AtSwipeAction 一般使用场景</…