mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-15 17:30:27 +08:00
feat: 用户友好的异常处理
This commit is contained in:
@@ -19,6 +19,7 @@ using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using GlobalHotKey;
|
||||
using MeoAsstGui.MaaHotKeys;
|
||||
using MeoAsstGui.Views;
|
||||
using Microsoft.Toolkit.Uwp.Notifications;
|
||||
using Stylet;
|
||||
using StyletIoC;
|
||||
@@ -121,6 +122,10 @@ namespace MeoAsstGui
|
||||
{
|
||||
// 抛异常了,可以打些日志
|
||||
File.AppendAllText("gui.err.log", DateTime.Now.ToString() + ' ' + e.Exception.ToString() + '\n');
|
||||
|
||||
var errorView = new ErrorView(e.Exception.Message, e.Exception.StackTrace, true);
|
||||
errorView.ShowDialog();
|
||||
errorView.Pause();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\ErrorView.xaml.cs" />
|
||||
<Page Include="Resources\Localizations\ko-kr.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -268,6 +269,7 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Views\ErrorView.xaml" />
|
||||
<Page Include="Views\SettingsView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -483,6 +485,11 @@
|
||||
<ItemGroup>
|
||||
<Resource Include="newlogo.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\Images\Warning.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>xcopy /e /y /i /c "$(ProjectDir)..\..\3rdparty\tools" "$(TargetDir)"
|
||||
|
||||
BIN
src/MeoAsstGui/Resources/Images/Warning.png
Normal file
BIN
src/MeoAsstGui/Resources/Images/Warning.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
@@ -331,6 +331,11 @@
|
||||
<!-- AsstProxy -->
|
||||
<system:String x:Key="UnknownAbnormal">The resource is damaged, please download the full package again</system:String>
|
||||
<system:String x:Key="Error">Error</system:String>
|
||||
<system:String x:Key="ErrorDetails">Details</system:String>
|
||||
<system:String x:Key="ErrorFeedback">Feedback</system:String>
|
||||
<system:String x:Key="ErrorFeedbackLinkText">Create a GitHub issue</system:String>
|
||||
<system:String x:Key="ErrorQqGroup">QQ Group</system:String>
|
||||
<system:String x:Key="ErrorQqGroupLinkText">704746719</system:String>
|
||||
<system:String x:Key="InitializationError">Initialization error!</system:String>
|
||||
<system:String x:Key="ResolutionNotSupported">Emulator resolution not supported, please set at least 720P with 16:9 ratio</system:String>
|
||||
<system:String x:Key="ResolutionAcquisitionFailure">fails to be obtain emulator resolution . Please restart computer or consider try other emulator</system:String>
|
||||
|
||||
@@ -345,6 +345,11 @@
|
||||
<!-- AsstProxy -->
|
||||
<system:String x:Key="UnknownAbnormal">リソースファイルが破損しています。完全なパッケージを再度ダウンロードしてください</system:String>
|
||||
<system:String x:Key="Error">エラー</system:String>
|
||||
<system:String x:Key="ErrorDetails">情報</system:String>
|
||||
<system:String x:Key="ErrorFeedback">Feedback</system:String>
|
||||
<system:String x:Key="ErrorFeedbackLinkText">Create a GitHub issue</system:String>
|
||||
<system:String x:Key="ErrorQqGroup">QQ Group</system:String>
|
||||
<system:String x:Key="ErrorQqGroupLinkText">704746719</system:String>
|
||||
<system:String x:Key="InitializationError">初期化エラー!</system:String>
|
||||
<system:String x:Key="ResolutionNotSupported">エミュレータの解像度はサポートされていません。アスペクト比16:9で、720p以上に設定してください</system:String>
|
||||
<system:String x:Key="ResolutionAcquisitionFailure">エミュレータの解像度を取得できませんでした。コンピュータを再起動するか、エミュレータを変更してから再試行することをお勧めします</system:String>
|
||||
|
||||
@@ -331,6 +331,11 @@
|
||||
<!-- AsstProxy -->
|
||||
<system:String x:Key="UnknownAbnormal">리소스가 손상되었습니다. 전체 패키지를 다시 다운로드하십시오.</system:String>
|
||||
<system:String x:Key="Error">오류</system:String>
|
||||
<system:String x:Key="ErrorDetails">신용</system:String>
|
||||
<system:String x:Key="ErrorFeedback">Feedback</system:String>
|
||||
<system:String x:Key="ErrorFeedbackLinkText">Create a GitHub issue</system:String>
|
||||
<system:String x:Key="ErrorQqGroup">QQ Group</system:String>
|
||||
<system:String x:Key="ErrorQqGroupLinkText">704746719</system:String>
|
||||
<system:String x:Key="InitializationError">초기화 오류!</system:String>
|
||||
<system:String x:Key="ResolutionNotSupported">에뮬레이터 해상도가 지원되지 않습니다. 해상도를 720p 이상, 16:9 으로 설정해주세요.</system:String>
|
||||
<system:String x:Key="ResolutionAcquisitionFailure">에뮬레이터 해상도를 가져오지 못했습니다. 컴퓨터를 다시 시작하거나 에뮬레이터를 변경한 후 다시 시도하는 것이 좋습니다.</system:String>
|
||||
|
||||
@@ -331,6 +331,11 @@
|
||||
<!-- AsstProxy -->
|
||||
<system:String x:Key="UnknownAbnormal">🍻🍺🍺🍺🍻🍸🕺🍺🍸🕺🍺🍻🕺🕺🍺🍸🕺🍻🍻🍺</system:String>
|
||||
<system:String x:Key="Error">🍻🍻🕺</system:String>
|
||||
<system:String x:Key="ErrorDetails">🍻🍷🍻</system:String>
|
||||
<system:String x:Key="ErrorFeedback">🕺🕺🕺</system:String>
|
||||
<system:String x:Key="ErrorFeedbackLinkText">🍺🍻🕺🍺🍸🍻🕺🕺🍸🍻🍷🕺🍷🍻🍺🍷🍻🍷🍷🍻🍺🍸🍷🍷🍻🍻🍸</system:String>
|
||||
<system:String x:Key="ErrorQqGroup">🍺🍻🕺🍸🍻</system:String>
|
||||
<system:String x:Key="ErrorQqGroupLinkText">🍸🍷🍻💃🍺🍻🕺🍺🍻🍻</system:String>
|
||||
<system:String x:Key="InitializationError">🍻🍺🍺🕺🍺🍸🍸</system:String>
|
||||
<system:String x:Key="ResolutionNotSupported">🍻🍻🍷🍷🍻🍸🍺🍸🍸🍸🕺💃🍷🍻🍺🍻🍺🍻🍻🍷🍺🍸🍻🍷🕺🍷🍻🍺🍷🍻🍷🍻🍻🍸🍷</system:String>
|
||||
<system:String x:Key="ResolutionAcquisitionFailure">🍺🍸🍷🍻🍻🍺🍸💃🍷🍸🍸🍸🍷🍸💃🍷🍸🍸🍻🍷🍸🕺🍻🍸🍸🕺🍷🍺🍷🕺</system:String>
|
||||
|
||||
@@ -331,6 +331,11 @@
|
||||
<!-- AsstProxy -->
|
||||
<system:String x:Key="UnknownAbnormal">资源损坏,请重新下载完整安装包</system:String>
|
||||
<system:String x:Key="Error">错误</system:String>
|
||||
<system:String x:Key="ErrorDetails">信息</system:String>
|
||||
<system:String x:Key="ErrorFeedback">反馈问题</system:String>
|
||||
<system:String x:Key="ErrorFeedbackLinkText">创建 GitHub issue</system:String>
|
||||
<system:String x:Key="ErrorQqGroup">QQ群</system:String>
|
||||
<system:String x:Key="ErrorQqGroupLinkText">704746719</system:String>
|
||||
<system:String x:Key="InitializationError">初始化错误!</system:String>
|
||||
<system:String x:Key="ResolutionNotSupported">模拟器分辨率不支持,请设置为 720p 或更高,且为 16:9 比例</system:String>
|
||||
<system:String x:Key="ResolutionAcquisitionFailure">模拟器分辨率获取失败,建议重启电脑,或更换模拟器后再次尝试</system:String>
|
||||
|
||||
@@ -331,6 +331,11 @@
|
||||
<!-- AsstProxy -->
|
||||
<system:String x:Key="UnknownAbnormal">資源損毀,請重新下載完整安裝包</system:String>
|
||||
<system:String x:Key="Error">錯誤</system:String>
|
||||
<system:String x:Key="ErrorDetails">信息</system:String>
|
||||
<system:String x:Key="ErrorFeedback">反饋問題</system:String>
|
||||
<system:String x:Key="ErrorFeedbackLinkText">創建 GitHub issue</system:String>
|
||||
<system:String x:Key="ErrorQqGroup">QQ群</system:String>
|
||||
<system:String x:Key="ErrorQqGroupLinkText">704746719</system:String>
|
||||
<system:String x:Key="InitializationError">初始化錯誤!</system:String>
|
||||
<system:String x:Key="ResolutionNotSupported">模擬器解析度不支持,請設定為 720p 或更高,且為 16:9 比例</system:String>
|
||||
<system:String x:Key="ResolutionAcquisitionFailure">模擬器解析度獲取失敗,建議重啟電腦,或更換模擬器後再次嘗試</system:String>
|
||||
|
||||
37
src/MeoAsstGui/Views/ErrorView.xaml
Normal file
37
src/MeoAsstGui/Views/ErrorView.xaml
Normal file
@@ -0,0 +1,37 @@
|
||||
<Window x:Class="MeoAsstGui.Views.ErrorView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:MeoAsstGui"
|
||||
mc:Ignorable="d"
|
||||
Title="{DynamicResource UnknownErrorOccurs}" Height="400" Width="628" WindowStyle="SingleBorderWindow" ResizeMode="NoResize" Background="#FFE6E6E6" WindowStartupLocation="CenterScreen" Topmost="True">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0*"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Image Grid.Column="0" Grid.ColumnSpan="2" Margin="0,0,512,270" Width="50" Source="/Resources/Images/Warning.png" Stretch="Uniform" />
|
||||
|
||||
<TextBlock Grid.ColumnSpan="2" Grid.Column="0" Text="{DynamicResource Error}" HorizontalAlignment="Left" Margin="115,20,0,0" VerticalAlignment="Top" FontWeight="Bold" />
|
||||
<TextBox Grid.ColumnSpan="2" Grid.Column="0" x:Name="Error" HorizontalAlignment="Left" TextWrapping="Wrap" Background="#FFE6E6E6" BorderThickness="0" Padding="0" Text="{DynamicResource UnknownErrorOccurs}" Margin="140,45,0,0" VerticalAlignment="Top" MaxHeight="40" Width="455" />
|
||||
|
||||
<TextBlock Grid.ColumnSpan="2" Grid.Column="0" Text="{DynamicResource ErrorDetails}" HorizontalAlignment="Left" Margin="115,95,0,0" VerticalAlignment="Top" FontWeight="Bold"/>
|
||||
<TextBox Grid.ColumnSpan="2" Grid.Column="0" x:Name="ErrorDetails" HorizontalAlignment="Left" TextWrapping="Wrap" Background="#FFE6E6E6" BorderThickness="0" Padding="0" Text="{DynamicResource UnknownErrorOccurs}" Margin="140,120,0,0" VerticalAlignment="Top" MaxHeight="150" Width="455" />
|
||||
|
||||
<TextBlock Grid.ColumnSpan="2" Grid.Column="0" Text="{DynamicResource ErrorFeedback}" HorizontalAlignment="Left" Margin="376,300,0,0" VerticalAlignment="Top"/>
|
||||
<TextBlock Grid.ColumnSpan="2" Grid.Column="0" HorizontalAlignment="Left" Margin="466,300,0,0" VerticalAlignment="Top" Width="129" Height="23">
|
||||
<Hyperlink Name="LinkToCreateGitHubIssue" Click="LinkToCreateGitHubIssue_OnClick" NavigateUri="https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/new/choose" FontSize="10.667">
|
||||
<Run Text="{DynamicResource ErrorFeedbackLinkText}" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock x:Name="ErrorQqGroup" Grid.ColumnSpan="2" Grid.Column="0" Text="{DynamicResource ErrorQqGroup}" HorizontalAlignment="Left" Margin="376,326,0,0" VerticalAlignment="Top"/>
|
||||
<TextBlock x:Name="ErrorQqGroupLink" Grid.ColumnSpan="2" Grid.Column="0" HorizontalAlignment="Left" Margin="466,326,0,0" VerticalAlignment="Top" FontSize="10.667" Width="71">
|
||||
<Hyperlink Name="LinkToJoinQqGroup" Click="LinkToJoinQqGroup_OnClick" NavigateUri="https://jq.qq.com/?k=PYoCP2lS" FontSize="10.667">
|
||||
<Run Text="{DynamicResource ErrorQqGroupLinkText}" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Window>
|
||||
61
src/MeoAsstGui/Views/ErrorView.xaml.cs
Normal file
61
src/MeoAsstGui/Views/ErrorView.xaml.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
using Application = System.Windows.Forms.Application;
|
||||
|
||||
namespace MeoAsstGui.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// ErrorView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ErrorView : Window
|
||||
{
|
||||
protected bool ShouldExit { get; set; }
|
||||
|
||||
public ErrorView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public ErrorView(string error, string details, bool shouldExit)
|
||||
{
|
||||
InitializeComponent();
|
||||
Title = error;
|
||||
Error.Text = error;
|
||||
ErrorDetails.Text = details;
|
||||
ShouldExit = shouldExit;
|
||||
|
||||
var isZhCn = ViewStatusStorage.Get("GUI.Localization", Localization.DefaultLanguage) == "zh-cn";
|
||||
ErrorQqGroup.Visibility = isZhCn ? Visibility.Visible : Visibility.Hidden;
|
||||
ErrorQqGroupLink.Visibility = isZhCn ? Visibility.Visible : Visibility.Hidden;
|
||||
}
|
||||
|
||||
public void Pause()
|
||||
{
|
||||
while (ShouldExit)
|
||||
{
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnClosed(EventArgs e)
|
||||
{
|
||||
if (ShouldExit)
|
||||
{
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
private void LinkToCreateGitHubIssue_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Process.Start(LinkToJoinQqGroup.NavigateUri.ToString());
|
||||
}
|
||||
|
||||
private void LinkToJoinQqGroup_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Process.Start(LinkToJoinQqGroup.NavigateUri.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user