hualinux ros 1.20:RouterOS脚本(十): catch异常处理、ros脚本调试方法

本文介绍了ROS脚本中的异常处理方法,通过do...catch语句块捕获并自定义错误提示,以及如何使用catch命令和put命令进行脚本调试。此外,还提到了通过逐步添加和删除代码的最小化法来定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、ros脚本异常处理

1.1 关于异常处理

1.2 ros异常语法

二、ros脚本调试

2.1 使用catch命令调试

2.2 使用输出命令put(推荐)

2.3 最小化法


我们本章继续讲ros,这里主要是讲ros脚本异常处理,以及ros脚本调试方法。

一、ros脚本异常处理

1.1 关于异常处理

我们执行一条语句或多条语句(我这里叫“语句块”)时

  • 不确定是否发生错误,当错误发生的时候,希望能得到相关处理。
  • 执行的错误信息,我们不想向用户直接显示ros系统的具体错误,而是改为自定义的好友方式。

这时候就要用到catch语句来捕获异常了。

1.2 ros异常语法

ros的异常处理使用do...catch命令,语法如下:

:do {
  语句
} on-error={ 语句};

上面的意思是,尝试执行do里面的语句,如果语句或语句块执行过程中发生了错误,那么就转执行 on-error中的语句;如果do中语句没有错误,则会执行完do中语句后,不会执行on-error中的语句,继续执行脚本中下一条命令。

比如我们尝试添加一个ppp用户,用户名user1,密码为123,不存在的配置文件名为user,正常执行情况如下:

# 指定了一个不存在的配置文件,发现报错了
[hua@MikroTik] > ppp secret add name=user1 password=123 profile=user local-address=10.10.10.2
input does not match any value of profile

发现报错了,这种报错是直接给开发人员自己看的,我们想如果这个语句执行错误,基本上可以判断是配置文件有问题,我们就直接提示配置文件错误或者不存在这样会友好些,修改成如下:

# 改用指定的方式提示
[hua@MikroTik] > :do { /ppp secret add name=user1 password=123 profile=user1 local-address=10.10.10.2 \
{\... } on-error={ :put "profile error or exsit"};                                                     
profile error or exsit

当然如果我们想当指定执行不了,就把配置文件修改为ros默认的配置文件执行,也行,只是把on-error部分修改成如下:就相当于实现中,A方案执行不了的时候就自动启动B方案

:do { /ppp secret add name=user1 password=123 profile=pppoe1 local-address=10.10.10.2 \
} on-error={ /ppp secret add name=user1 password=123 profile=default local-address=10.10.10.2 };

二、ros脚本调试

ros脚本调用不像pyton那样可以用专业的ide开发工具的debug调试功能,但ros对脚本的提示还是够友好的,还会提示出大概哪里有问题,如果直接看ros提示看不出东西的话,可以使用如下方式

2.1 使用catch命令调试

当我们怀疑某个语句或语句块有问题,那么我们可以使用catch把认为有问题部分括起来,判断,如

:do {

#怀疑有问题的语句

} on-error {  #put命令输出提示 } 

2.2 使用输出命令put(推荐)

上面怀疑语句或语句块有问题,需要修改代码,觉得有点麻烦,那么就可以使用put命令,在某条语句前或后,插入put命令来判断,这样就可以知道个范围了

...

:put "xxxl"

 /ppp secret add name=user1 password=123 profile=user1 local-address=10.10.10.2

: put "add user ok,the name is user1" 

如果最前面到倒数第3个语句没问题,那么倒数第3条语句肯定没有问题。当执行到倒数第2条语句出总问题了,最后一条语句肯定不会被执行,这样就判断倒数第2条语句有问题了

2.3 最小化法

当我们脚本写得很多的时候,眼都花了,排障比较有难度,尤其是业务逻辑错误,并不是语法错误,我们可以把先实现的功能全注解掉,用:put方式输入,如果最小的没有问题,那么再慢慢添加,让它复杂化,这样也能排除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值