nullnull调试、测试和异常处理西源软件培训中心回顾回顾WinForms可用于 Windows 窗体应用程序开发
Windows 窗体控件是从 System.Windows.Forms.Control 类派生的类
标签控件用于显示用户不能编辑的文本或图像
按钮控件提供用户与应用程序交互的最简便
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
组合框控件是列
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选择项目
窗体提供了收集、显示和传送信息的界面,是 GUI的重要元素
消息框显示消息,用于与用户交互目标目标理解如何调试应用程序和排除错误
掌握如何测试 C# 应用程序
了解测试和调试的区别
在程序中进行错误捕获和错误处理简介简介应用程序开发可以安装在客户端机器上应用程序必须
无错误
无故障
可靠
稳健
查找和排除错误或故障称为调试调试的必要性 调试的必要性 在事物处理过程中,系统显示错误消息必须重新输入全部信息在部署应用程序前必须先对其进行调试错误类型错误类型错误类型语法错误逻辑错误运行时错误语法错误、缺少括号等
在编译时确定
易于确定错误的算法导致错误结果、公式错误等
在执行过程中确定
难以调试内存泄漏、以零作除数、异常
在运行时确定
难以调试调试过程调试过程调试器观察程序的运行时行为 跟踪变量的值确定语义错误的位置查看寄存器的内容查看内存空间 调试过程调试过程暂停可在代码中插入“断点”,以便在特
定行处暂停执行该代码调试过程调试过程右键单击所需代码行,以设置断点选择“插入断点”调试过程调试过程选择“调试” “继续”以便继续执行程序调试过程调试过程.NET 集成开发环境Debug模式Release模式 VS.NET 中的调试工具 VS.NET 中的调试工具“局部变量”窗口 VS.NET 中的调试工具 VS.NET 中的调试工具“监视”窗口 VS.NET 的调试工具 VS.NET 的调试工具“快速监视”对话框 VS.NET 中的调试工具 VS.NET 中的调试工具“即时”窗口 VS.NET 中的调试工具 VS.NET 中的调试工具跨语言调试
调试使用 .NET 框架编写的应用程序以及 Win32 本
机应用程序
加入正在运行的程序
调试多个程序
Visual Studio .NET 调试器的功能异常异常网上银行张三转帐25000到李四的帐面上020,000数据库系统将查询发送到数据库中tranfer_money()
{
sendquery();
}
…….
……. 余额= 20000-25000 程序崩溃拒绝交易 “C#”中的异常 C# 中的异常处理2-1 C# 中的异常处理2-1 ...
INPUT Divisor
IF Divisor = 0 THEN
Result = Divident/Divisor
....代码片段 1输入除数结果 =_024GOTO PREVIOUS LINE触发异常处理程序 C# 中的异常处理 C# 中的异常处理...
INPUT Divisor
Result = Divident/Divisor
....代码片段 1“用户自定义”错误检查机制难以检查输入的任何“特殊字符”IF Divisor = 0 THEN GOTO PREVIOUS LINE
IF Divisor < 0 THEN PRINT “无效输入”
运行库运行库应当提供“错误检查机制” System.ExceptionSystem.ExceptionSystem.ExceptionSystem.ExceptionSystem.ExceptionSystem.Exception在 C# 程序中,引发异常共有以下两种方式使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码
使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常Try...Catch...Finallytry 和 catch 块try 和 catch 块滤水器filter_water()
{
try
{
water();
}
catch
{
impurities.Show();
}
}
…….
…….过滤水杂质//程序代码 //错误处理代码
try
{
//程序代码
}
catch (IOException E)
{
//错误处理代码
}
try 和 catch 块try 和 catch 块
try
{
//程序代码
}
catch (IOException E)
{
//错误处理代码
}
I/O 设备可以生成错误try 和 catch 块try 和 catch 块
try
{
//程序代码
}
catch( E)
{
//错误处理代码
}
可处理系统中的任何一种异常System.Exceptiontry 和 catch 块try 和 catch 块if (UserInput < 1 && UserInput > 100)
{
throw new InvalidNumberInput
(UserInput + “不是有效输入
(请输入 1 和 100 之间的数字)”);
}throw 可用来引发自定义异常“InvalidNumberInput” 使用 finally使用 finallytry
{
//程序代码
}
catch
{
//错误处理代码
}
finally
{
//finally 代码
}无论控制流如何都会执行多重 catch 块多重 catch 块try
{
//程序代码
}
catch (IOException E)
{
//错误处理代码
}
catch (OutOfMemoryException E)
{
//错误处理代码
}用于捕捉两种异常的“catch”块多重 catch 块多重 catch 块public class MyCustomException : System.ApplicationException
{
public MyCustomException(string message):base(message)
{
}
}
try
{
quotient = dividend /divisor;
}
catch(MyCustomExeption ex)
{
Console.WriteLine(ex.Message);
}……………………….
……………………….
if(divisor == 0)
throw new MyCustomException(“除数不能为零");
……………示例-建立自定义异常示例-建立自定义异常using System;
public class EmailErrorException:ApplicationException
{
public string _message;
//重写构造函数
public EmailErrorException():base()
{
_message = null;
}
public EmailErrorException(string message):base()
{
_message = message.ToString();
}
public EmailErrorException(string message,
Exception myNew):base(message,myNew)
{
_message = message.ToString();
}
//Message属性的重载
public override string Message
{
get
{
return "Email格式错误。";
}
}
}示例-throw自定义异常示例-throw自定义异常private bool SaveInfo(string name, string email)
{
string[] subStrings = email.Split('@');
//如果输入的Email不是被“@”字符分割成两段,则抛出Email错误异常
if(subStrings.Length != 2)
{
throw new EmailErrorException();
}
else
{
int index = subStrings[1].IndexOf(".");
//查找被“@”字符分成的两段的后一段中“.”字符的位置,没有“.” //或者“.”字符是第一个字符,则抛出EmailErrorException异常
if(index <= 0)
{
throw new EmailErrorException();
}
//如果“.”字符是最后一个字符,抛出EmailErrorException异常
if(subStrings[1][subStrings[1].Length -1] == '.')
{
throw new EmailErrorException();
}
}
return true;
}示例-Catch自定义异常示例-Catch自定义异常private void btnSubmit_Click(object sender, System.EventArgs e)
{
if(txtName.Text.Length == 0 && txtEmail.Text.Length == 0)
{
MessageBox.Show("请填写姓名和Email。", "填写不完整"
, MessageBoxButtons.OK
, MessageBoxIcon.Information);
return;
}
try
{
SaveInfo(txtName.Text, txtEmail.Text);
}
catch(EmailErrorException ex)
{
MessageBox.Show(ex.Message, "Email 格式错误"
, System.Windows.Forms.MessageBoxButtons.OK
, MessageBoxIcon.Information);
return;
}
MessageBox.Show("保存成功。", "成功"
, MessageBoxButtons.OK
, MessageBoxIcon.Information);
}
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
总结调试是搜寻和消除应用程序中的错误的过程
语法错误表示编译器无法理解代码
调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行
“局部变量”窗口允许用户监控当前程序中所有变量的值
单元测试和集成测试是测试大型应用程序的常用技术
当应用程序遇到运行时错误时,就会引发异常
C# 中的所有异常都派生自 Exception 类作业作业填空题
(1) 当一个方法执行时出错了,会________。
(2) try块运行后,总是会执行________块中的代码。
(3) 所有的异常类都从________继承。
(4) Convert.ToInt32方法会引发_________,如果输入的参数不能转化为整数。作业作业判断正误,如果错误,请说明原因。
(1) 当前方法产生的异常总是由当前的方法来处理。
(2) 用户自定义的异常应该从System.Exception类继承。
(3) 当访问数组的索引越界时,会有异常引发。
(4) 如果在try块后没有任何catch块,那么finally块也是可选的。作业编程改错题
(1) 在try语句中,引发一个NullReferenceException异常,捕获其并
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
。最终执行输出“Executing finally block.”。
输出:
Executing the try statement.
System.NullReferenceException: Object reference not set to an instance of an object.
at EHClass.Main() Caught exception #1.
Executing finally block.
作业作业执行以下语句,验证输出语句有无执行,并解释理由。
using System;
public class ThrowTest
{
static void Main()
{
string s = null;
if (s == null)
{
throw new ArgumentNullException();
}
Console.Write("The string s is null");
}
}
作业作业(3) 判断以下程序会在哪里产生异常或错误。
static void Main()
{
int x;
try
{
// Don't initialize this variable here.
x = 123;
}
catch
{
}
// Error: Use of unassigned local variable 'x'.
Console.Write(x);
}
作业作业(4) 判断以下程序是否可以捕获两个异常。如不可以,如何更改?
using System;
class MainClass
{
static void ProcessString(string s)
{
if (s == null)
{
throw new ArgumentNullException();
}
}
作业作业static void Main()
{
try
{
string s = null;
ProcessString(s);
}
catch (Exception e)
{
Console.WriteLine("{0} Second exception caught.", e);
}
catch (ArgumentNullException e)
{
Console.WriteLine("{0} First exception caught.", e);
}
}
}
作业作业作业 问答题
错误与异常的区别是什么?
了解异常发生的原因?
掌握异常处理机制
finally 子句的作用