private static void outputExceptionDetails(Exception ex) { try { HandledException hex = ex as HandledException; if (hex == null && ex is AggregateException) { hex = (HandledException)((AggregateException)ex).InnerExceptions.FirstOrDefault(a => a is HandledException); } logLine(""); logLine("Failed"); logLine("-------"); if (hex != null) { logLine(hex.FriendlyErrorMessage); } else { logLine(ex.Message); } if (Settings.Read("OutputLevel", "1") == "3") { logLine(ex.StackTrace); } } catch { } }
public void Track(Exception exception) { if (exception.IsAnonymized()) { TrackException(exception); } else { HandledException.Track(exception.GetType().FullName, exception.Message); } }
protected override InterceptionAction InterceptCore(Message messageData) { ExceptionMessage exceptionMessage = messageData.Get <ExceptionMessage>(); if (exceptionMessage.ExceptionInfo?.SourceException is RecoverableException) { HandledException.Decorate(exceptionMessage); } return(InterceptionAction.Continue); }
static int Main(string[] args) { logEnabled = true; try { logEnabled = args.Length == 0 || Settings.Read("OutputLevel", "1") != "0"; } catch { } Version v = Assembly.GetEntryAssembly().GetName().Version; Version vl = Assembly.GetEntryAssembly().GetName().Version; logLine(string.Format("{0} v{1}.{2}, NKit.dll v{3}.{4} :: Nanook", Settings.ExeName, v.Major.ToString(), v.Minor.ToString(), vl.Major.ToString(), vl.Minor.ToString())); logLine(""); try { if (args.Length == 0) { logLine(string.Format(@"Convert Wii and GameCube image files to ISO Usage: {0} <files|paths|masks> ... Parameters can be 1 or more filename and paths with or without masks. Masks can search subfolders. Edit NKit.dll.config Supported files: iso, wbfs, gcm, iso.dec, zip, rar, 7z If paths or filenames have spaces ensure they are enclosed in ""s Examples {0} c:\temp\image.wbfs {0} c:\temp\scrubbed.iso {0} c:\temp {0} *.* {0} c:\temp\image.wbfs \temp\*.zip x*.iso.dec {0} ""c:\path 1\*.zip"" ""c:\path 2\*.gcm"" ""..\path 3\*.iso"" Edit 'NKit.dll.config' to specify all the required values ", Settings.ExeName)); return(2); } bool recurse = Settings.Read("SearchSubfolders", "true") == "true"; logLine("Processing command line and scanning files..."); SourceFile[] files = SourceFiles.Scan(args, recurse); logLine(string.Format("Found {0} file{1}", files.Length.ToString(), files.Length == 1 ? "" : "s")); logLine(""); foreach (SourceFile src in files) { Converter nkitConvert = new Converter(src, true); try { nkitConvert.LogMessage += dx_LogMessage; nkitConvert.LogProgress += dx_LogProgress; OutputResults results = nkitConvert.ConvertToIso(); //apps can use the results } catch (Exception ex) { outputExceptionDetails(ex); } finally { nkitConvert.LogMessage -= dx_LogMessage; nkitConvert.LogProgress -= dx_LogProgress; } } if (files.Length == 0) { logLine("No files found"); } } catch (Exception ex) { HandledException hex = ex as HandledException; if (hex == null && ex is AggregateException) { hex = (HandledException)((AggregateException)ex).InnerExceptions.FirstOrDefault(a => a is HandledException); } logLine(""); logLine("Failed"); logLine("-------"); if (hex != null) { logLine(hex.FriendlyErrorMessage); } else { logLine(ex.Message); } } if (logEnabled && Settings.Read("WaitForKeyAfterProcessing", "true") == "true") { logLine(""); logLine("Press enter / return to exit . . ."); Console.ReadLine(); } Environment.ExitCode = 2; return(2); }