c# - 如果使用 Validator,try-catch 会变得无关紧要吗?
问题描述
我的 ASP.NET 计算器项目的 .aspx.cs -文件中有以下代码:
protected void Addition_Click(object sender, EventArgs e)
{
try
{
double value1 = double.Parse(Value1.Text);
double value2 = double.Parse(Value2.Text);
double result = value1 + value2;
Result.Text = result.ToString();
}
catch (NotFiniteNumberException)
{
Result.Text = "Check your input!";
throw;
}
}
.aspx 文件(由于自动生成代码导致格式混乱):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CalcForm.aspx.cs" Inherits="task1.CalcForm" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Calculator</title>
<link rel="stylesheet" href="CalcStyle.css"/> <!-- Style for calculator app -->
</head>
<body>
<form id="CalcForm" runat="server"> <!-- Form for the calculator -->
<!-- Validate first input value -->
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="Value1" ErrorMessage="Not a number!" Operator="DataTypeCheck" Type="Double">
</asp:CompareValidator>
<!-- Validate second input value -->
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="Value2" ErrorMessage="Not a number!" Operator="DataTypeCheck" Type="Double">
</asp:CompareValidator>
<br />
<asp:TextBox ID="Value1" runat="server" ToolTip="Give value 1"></asp:TextBox> <!-- TextBox for value 1 -->
<asp:TextBox ID="Value2" runat="server" ToolTip="Give value 2"></asp:TextBox> <!-- TextBox for value 2 -->
=
<asp:TextBox ID="Result" runat="server" ReadOnly="True" ToolTip="Result"></asp:TextBox> <!-- TextBox for result of the calculation -->
<br />
<br />
<asp:Button ID="Addition" runat="server" Text="+" Width="61px" OnClick="Addition_Click" />
<asp:Button ID="Substraction" runat="server" Text="-" Width="61px" />
<br />
</form>
</body>
</html>
这些值已经在 Web 表单中使用 CompareValidator 控件进行了验证,如果输入不是数字(双精度),则 CompareValidator 将显示错误消息。但是我想尝试一下是否可以在执行计算的后台代码中发现错误。
捕获部分应插入“检查您的输入!” 在计算结果正常的TextBox中,但是如果我尝试这样做没有反应,例如“ 2 + asd ”,这应该会导致错误。Validator 确实显示了第二个值“asd”的消息,因为它不是双精度值,但是来自 catch-block 的消息没有出现。
我在这里使用了错误的异常还是验证器已经进行了异常处理并阻止后台代码访问这些值?
简而言之,当 CompareValidator 已经显示它自己的消息时,我可以从 try-catch 块中获得第二条错误消息到 Result.Text 吗?
解决方案
好的,我最终保留了 try-catch 和 Validator 以防万一。
推荐阅读
- python - tf2onnx Tensorflow 到 Onnx 输出不一致
- python - Fastapi + 草莓 GraphQL
- freeswitch - freeSwitch ESL api api 发起响应 -ERR NORMAL_CLEARING
- nginx - Nginx 位置、重写、上游和 proxy_pass 问题,无法访问 URL
- python - 如何根据python中的条件进行连接
- google-apps-script - 使用脚本在电子表格上移动行并在工作表上有一个按钮来激活它?
- docker - docker-compose 中的 Kafka 无法提交指标
- javascript - 使用ajax在新选项卡中打开文件
- c# - 使用订阅的 Azure 服务总线队列
- android - Android App (Kotlin) 中的 Fragment 将值设置为 null