[English Version]

MFP语言和可编程科学计算器

MFP语言简介

operators

function

variable

if

while do for

break continue

select

try catch

class

call

citingspace

help

@compulsory_link

@execution_entry

@build_asset

MFP函数

部署用户自定义函数

在您的应用中调用MFP

创建安卓安装包

小游戏的开发

绘制图形

使用MFP进行数学分析

使用MFP处理文件

数,字符串和数组

日期时间和系统相关

可编程科学计算器介绍

MFP编程语言try,throw,catch,endtry语句:

Try语句用于开始一个Try程序块。Try语句没有任何参数。在Try程序块中,任何由于MFP语言触发的异常将会被抛出并传递到跟随try程序块的某一个catch语句中处理。当然,如果没有一个catch语句能够处理这个被抛出来的异常,该异常将会被抛向外层的程序块或函数。

Throw语句有一个字符串参数。如果throw语句被执行,MFP打印出字符串参数然后退出。

Catch语句可以接受一个表达式作为参数,也可以不接受参数。如果不接受参数,该catch语句捕获任何由该语句对应的try程序块抛出的异常。如果它有一个表达式参数,该表达式参数作为一个异常过滤器用于决定一个异常是否由该catch语句处理。如果异常过滤器表达式的值是布尔值true,该异常被捕获,否则,该异常被传递到下一个catch语句,或者被抛向外层的程序块或函数。Catch语句提供三个字符串类型的内部参数,也就是level,type和info。参数level存储异常的层级,它的值是"LANGUAGE"(也就是编程语言级别的异常,比如没有endif语句跟随if语句或者一个用户定义的抛出字符串的异常)或者"EXPRESSION"(也就是表达式级别的异常,比如被零除或者缺少右括号),参数type是MFP编程语言内部定义异常的类型,参数info是异常的内容。如果开发人员用一个throw语句抛出一个字符串,info的值就是这个字符串。这三个参数仅能用于catch语句中的异常过滤器。但是异常过滤器可以使用变量名和函数名空间中的任意变量和函数。如果一个变量和这三个catch语句的内部参数重名,它将被重名内部参数重载。

Endtry用于结束一个try/catch程序块,它不接受任何参数。

以下是try/throw/catch/endtry的例子。

Function testtry1()
	Variable a, b, c
	a = 3
	Try
		Select a
		Case 3
			print("a == 1\n")
			Try
				print (NULL==FALSE)
				dbc
			Catch
				print ("Cannot cvt NULL to boolean or dbc is undefined\n")
			EndTry
		EndS
		Throw "my exception"
	Catch (1+2)==4
		print ("IN (1+2) == 4")
	catch false
		print ("In false")
	Catch and((b=level)=="LANGUAGE", (c=info) == "my exception")
		print ("In catch and, b = ")
		print (b)
		print ("\n")
		Help
		 Try 
		 	c = adb
		 Catch
		 	print (" c= adb")
		 EndTry
			Help
		Endh
		Try
			c = 3/0
		Catch And((c= info)==c, level == "LANGUAGE")
			print ("In Language\n")
			print (c) 
		Catch And((c= info)==c, level=="EXPRESSION")
			print ("In Expression\n")
			print (c)
		EndTry
		print ("In upper level try\n")
		print (b)
		print (" , c = ")
		print (c)
		print ("\n")
	Catch or((b=level)=="LANGUAGE", (c=info) == "my exception")
		print ("In catch or, b = ")
		print (b)
		print (" , c = ")
		print (c)
		print ("\n")
	Endtry
Endf

这个函数的输出结果如下:

a == 1
FALSECannot cvt NULL to boolean or dbc is undefined
In catch and, b = LANGUAGE
In Expression
Zero division!In upper level try
LANGUAGE , c = Zero division!