我正在制作一个计算器,它可以根据提供给程序的电压和电流计算电阻。当程序计算该值时,它应该将日期时间、使用的电压、使用的电流和电阻值记录到给定文件路径中的文本文件中。我的问题是 try / catch,如果给程序提供了错误的文件路径,则不会发生错误,并且程序根本不会记录任何内容,因为它没有正确的文件路径。
所以我想让程序显示消息框错误消息并显示 ex.Message,然后您应该能够为程序提供正确的文件路径,然后继续。
我尝试将 try / catch 放在 if / else 的外部和内部,但程序做了同样的事情,它不显示错误消息。
(如果代码有拼写错误,它们可能是我将所使用的名称从芬兰语翻译成英语的结果)
namespace Resistance calculator
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
txtLogPath.Text = "C:\\Users\\MyUser\\Documents\\Log file.txt";
}
private void txtVoltage_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
txtVoltage.Clear();
}
private void txtCurrent_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
txtCurrent.Clear();
}
private void txtLogPath_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
txtLogPath.Clear();
}
private void btnCalculate_Click(object sender, RoutedEventArgs e)
{
if (double.TryParse(txtVoltage.Text, out double voltagevalue) &&
double.TryParse(txtCurrent.Text, out double currentvalue))
{
double Result = voltagevalue / currentvalue;
lblAnswer.Content = Result.ToString();
try
{
string logLine = DateTime.Now.ToString() + ", " + txtVoltage.Text + ", " + txtCurrent.Text + ", " + lblAnswer.Content;
System.IO.File.AppendAllText(txtLogPath.Text, logLine + "\n");
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message + "Incorrect filepath!");
}
}
else
{
MessageBox.Show("Error occured, please write numbers only.");
}
}
}
}
所以你隐含地说,当给出正确的文件路径时,try块正在被执行,并且只有当期望catch块被执行时才会出现问题,对吗?您是否尝试过在finally块中记录某些内容,以检查它是否以任何方式执行?