julia语言中的异常处理

  在程序运行中,可能会遇到各种预期之外的情况,如用户输入错误、网络故障、硬件问题等。通过异常处理机制,将错误处理代码与正常的业务逻辑代码分离开来,程序可以在遇到这些问题时做出适当的响应,而不是直接崩溃,这样可以显著提高程序的稳定性和可靠性,使得代码更加清晰、易于阅读和维护。julia语言通常使用 try-catch 、error()、throw()、finally 这几种方式来进行异常处理。

try-catch方法

格式:try...
catch...
end

 尝试计算-4的平方根,但是负数没法算平方根,所以输出异常处理

try sqrt(-4)
catchprintln("负数无法求平方根")
end

ed1810040c0c4f2cbf8dcc38db80e9b4.png 

根据输入键盘数字求平方根,因为需要读取键盘输入数值,代码需要在julia终端输入 julia xxx.jl 运行 

println("输入一个数: ")
myx = readline()
x = parse(Int, myx)tryprintln("输入的是: ", x, "平方根为:", sqrt(x))
catchprintln("输入的是: ", x, "平方根不能为负数")
end

 finally

无论try块中的代码是否成功执行,或者catch块是否捕获到了异常,finally块中的代码总是会被执行。

格式:
try...
catch...
finally...
end

 根据用户输入的文件名字打开文件,如果找不到该文件就创建一个文件并在里面输入文字

println("输入打开的文件名: ")
mystr = readline()trymyf = open(mystr, "r")str = readlines(myf)println(str)catchprintln("文件名不存在")finally  open("GGboy.txt", "w") do io  write(io, "吔屎了你")endend

运行结果

0a052b59d49c4c46944aa87734464b43.png

error() 

function another_function(y)  if y == 0  error("扑街啦,死靓仔!")  end  return 10 / y  
end  try  result = another_function(0)  
catch e  println("Caught an error: $e")  
end  

如果将 result = another_function() 中的值改为其他数字时,会在终端打印数字。

throw()

struct MyCustomException <: Exception  message::String  
end  # 使用 throw()抛出自定义异常的函数 
function my_function(x)  if x < 0  throw(MyCustomException("thank you jesus"))  end  return 2 * x  
end  try  result = my_function(-5)  
catch e  if e isa MyCustomException  println("Caught a custom exception: $(e.message)")  else  println("Caught an unexpected exception: $e")  end  
end  

整活(使用HTTP包下载网页源码及图片) 

using HTTP  function download_file(url::String, filename::String)  try  # 发送HTTP.get请求获取数据  response = HTTP.get(url)  # 检查响应是否成功  if response.status == 200  # 写入文件  open(filename, "w") do file  write(file, response.body)  end  println("靓仔你成功下载了: $(filename)")  else  println("你失败了吊毛, 状态码: $(response.status)")  end  catch e  # 捕获异常并处理  println("凉了,铁子: $(e)")  end  
end  html_url = "http://www.baidu.com"  
html_filename = "GG爆.html"  
download_file(html_url, html_filename)  image_url = "https://c-ssl.duitang.com/uploads/blog/202304/22/20230422153706_c4c2c.jpeg"  
image_filename = "GGBOND.jpg"  
download_file(image_url, image_filename)

运行结果

6b7f90004d764c5f8bc5ec41130f92d8.png

c8992b86d2824aed9ea1bf90fa1ebf39.png 

 

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

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

相关文章

在vue3中使用el-tree-select做一个树形下拉选择器

el-tree-select是一个含有下拉菜单的树形选择器&#xff0c;结合了 el-tree 和 el-select 两个组件的功能。 因为包含了el-tree的功能&#xff0c;我们可以自定义tree的节点&#xff0c;创造出想要的组件 使用default插槽可以自定义节点内容&#xff0c;它的default插槽相当于…

python自动化之获取实际响应数据-登录模块与我的商铺(第四天)

1.配置文件 新建config.py(config包) 2.登录 新建login.py模块(lib-apiLib) 根据接口文档,可知道登录接口的密码需要md5加密 接口文档,如有需要,可在评论区留言!!! login.py代码 # -*- coding: utf-8 -*- # @File : login.py # @Time : 2024/3/4 15:32 # @Autho…

本地项目推送到腾讯云轻量应用服务器教程(并实现本地推送远程自动更新)

将本地项目上传到腾讯云轻量应用服务器并实现后续的推送更新&#xff0c;具体步骤如下&#xff1a; 在本地项目目录下初始化 Git 仓库&#xff1a; cd 项目目录 git init将项目文件添加到 Git 仓库并提交&#xff1a; git add . git commit -m "Initial commit"在…

LeetCode_25_困难_K个一组翻转链表

文章目录 1. 题目2. 思路及代码实现&#xff08;Python&#xff09;2.1 模拟 1. 题目 给你链表的头节点 h e a d head head &#xff0c;每 k k k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k k k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节…

kafka消费端消息去重方案

背景 我们在日常工作中&#xff0c;消费kafka消息是一个最常见的操作&#xff0c;不过由于kafka队列中经常包含重复的消息&#xff0c;并且消息量巨大&#xff0c;所以我们消费端总是需要先把消息进行去重后在消费&#xff0c;以减少消费端的压力&#xff0c;那么日常中我们一…

docker的简单使用

在一些进行使用靶场或者工具的时候&#xff0c;我们可以用docker在线拉取&#xff0c;就可以省去手动搭建靶场的过程 一、docker的配置 因为docker是默认从docker的官网进行拉取&#xff0c;所以拉取经常速度很慢或者失败&#xff0c;我们先要进行一下配置&#xff0c;让他优…

电力系统的数字孪生开发流程

电力系统的数字孪生开发流程通常涉及以下关键步骤&#xff0c;这些步骤构成了电力系统数字孪生开发的基本流程。在实际开发过程中&#xff0c;可能会根据具体项目的要求和特点进行调整和补充。例如&#xff0c;可能会加入模型验证的环节以确保模型的准确性&#xff0c;或者加入…

【Ubuntu】将多个python文件打包为.so文件

1.为什么要将python打包为.so文件&#xff1f; 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…

常见的几种echarts类型

一&#xff1a;折线图 let option {tooltip: {},animation: false,grid: {top: "20%",bottom: "33%", //也可设置left和right设置距离来控制图表的大小left: 5%,right: 5%},xAxis: {boundaryGap:false,data: [1,2,3,4,5],axisLine: {show: true, //隐藏X轴…

ES单节点部署

ES 拉取镜像 docker pull elasticsearch:7.10.1启动容器 docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e "ES_JAVA_OPTS-Xms1g -Xmx1g" -v /es_data:/usr/share/elasticsearch/data --name es 558380375f1a注&#xff1a…

Python爬虫——Scrapy-1

目录 简介 安装 基本使用 1. 创建爬虫的项目 2. 创建爬虫文件 3. 运行爬虫代码 scrapy项目组成 scrapy工作原理 ​编辑 58同城 scrapy架构组成 汽车之家 总结 简介 Scrapy 是一个基于 Python 的开源网络爬虫框架&#xff0c;它可以帮助开发者快速、高效地构…

一个系列很多样式的wordpress外贸建站模板

菌菇干货wordpress跨境电商模板 食用菌、羊肚菌、牛肝菌、香菇、干黄花菜、梅干菜、松茸wordpress跨境电商模板。 https://www.jianzhanpress.com/?p3946 餐饮调味wordpress跨境电商模板 豆制品、蛋黄糖、烘焙、咖啡、调料、调味酱、餐饮调味wordpress跨境电商模板。 http…