Быстрый способ - использовать zip
для обработки символ за символом и просто взять максимум в каждой позиции;
arr = [' HHHHHHH HHHHHHHHHHH HHHHHHHHHHHHHHHHHHH ',
' E E EEE ',
' TT ',
' CC CCCC']
''.join(max(x) for x in zip(*arr))
' EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'
Я только что нашел это в блоге Скотта Хансельмана здесь под названием ELMAH , который является Регистратором / Обработчиком ошибок, который вы можете использовать без необходимости изменять свой код , Возможно, вы захотите разобраться с этим, поскольку он, похоже, прекрасно работает с MVC.
Вы должны указать виртуальный путь, то есть путь относительно базы приложения (т.е. никаких путей, внешних по отношению к приложению), поэтому что-то вроде: Server.Transfer ( "error.html") или Server.Transfer ( "/ error.html") или Server.Transfer ( "~ / error.html")
ELMAH - отличный обработчик ошибок для перехвата необработанных исключений. Он легко подключается к вашему веб-приложению через HttpModules и имеет различные опции для уведомлений и регистрации.
Особенности:
И FYI, SO использует ELMAH, хотя и раздвоенную версию. Это лучшее архитектурное объяснение и учебное пособие по настройке
По умолчанию приложения ASP.NET MVC имеют представление Shared / Error.aspx, наследуемое от
System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>
Если ваш контроллер использует атрибут [HandleError], все исключения будут пузыриться до тех пор, пока они не будут перехвачены, и они окажутся на этой странице.
Я просто добавил встроенный Page_Load (действительный в этом случае, так как это конец строки):
<script runat="server">
Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
MyExceptionHandlerService.LogException("exceptionsource", this.Model.Exception)
End Sub
</script>
После него, дружественный " Извините ... "сообщение. Похоже, что ELMAH более устойчив, но для моих нужд этого было достаточно.