首页 > 其他分享 >使用aop(肉夹馍)为BlazorServer实现统一异常处理

使用aop(肉夹馍)为BlazorServer实现统一异常处理

时间:2023-10-24 09:23:03浏览次数:33  
标签:BlazorServer 肉夹馍 方法 处理 context aop 异常 public

背景

用户做一个操作往往对应一个方法的执行,而方法内部会调用别的方法,内部可能又会调用别的方法,从而形成一个调用链。我们一般是在最顶层的方法去加try,而不是调用链的每一层都去加try。

在web开发中,用户的一个操作通常对应一个http请求,常见的mvc中一个controller的action会来执行这个处理。由于asp.net core是基于中间件管道的,很常见的方式就是定义一个“异常处理中间件”,它用try包住后续中间件的执行,在catch中捕获异常,记录日志,并返回一个统一的异常json结构返回给调用方。
一般我们会认为“全局异常处理中间件”是一个兜底的方式,我们仍然应该在action中去try,因为那是具体业务逻辑处理的起点,不过我觉得木有必要,完全可以定义一个UserFriendlyException代表业务逻辑异常,而系统默认的Exception认为是系统级异常,在action的调用链中,不需要try,只是发现不满足业务规则时: throw new UserFriendlyException 即可,而其它系统异常我们完全可以不考虑,最后在“全局异常处理中间件”中判断异常类型,若是UserFriendlyException则直接返回ex.Message给前端,不用做日志记录;系统级异常则应该记录异常堆栈日志,并返回一个友好的异常消息给前端。

Blazor server中的默认异常处理及其问题

在blazor server中,首次请求后服务端和浏览器建立了长连接websocket,后续的浏览器和服务端的交互没有类似http这种请求响应了,那在哪里做全局异常拦截呢?

blazor中提供了ErrorBoundary组件,基本格式如下:

<ErrorBoundary @ref="errorBoundary">
    <ChildContent>
        @Body
    </ChildContent>
    <ErrorContent>
        <p class="errorUI">

标签:BlazorServer,肉夹馍,方法,处理,context,aop,异常,public
From: https://www.cnblogs.com/jionsoft/p/17783675.html

相关文章

  • AOP
    AspectOrientedProgramming在软件业,AOP为AspectOrientedProgramming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以......
  • Spring-AOP根据spel获取方法参数值、Bean对象属性值
    Spring-AOP根据spel获取方法参数值、Bean对象属性值,动态的获取属性值,可以用来做注解式分布式锁、注解式获取属性值等等。第一步:自定义注解,代码如下所示packagecom.example.springbootstudy.interfaces;importjava.lang.annotation.*;@Target(ElementType.METHOD)@Inheri......
  • Spring AOP
    引言要掌握SpringAOP框架,需要弄明白AOP的概念。AOP概念AOP(AspectOrientedProgramming的缩写,翻译为面向方面或面向切面编程),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分隔离,从而使的业务逻辑各部分的耦合性降......
  • 自定义注解实现AOP
    自定义注解AOPpackagecom.log;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.aspectj.lang.annotation.Pointcut;importorg.aspectj.lang.reflect.MethodSignature;importorg.s......
  • 1.3Spring对AOP的支持
     并不是所有的AOP框架都是相同的,它们在连接点模型上可能有强弱之分。有些允许在字段修饰符级别应用通知,而另一些只支持与方法调用相关的连接点。它们织入切面的方式和时机也有所不同。但是无论如何,创建切点来定义切面所织入的连接点是AOP框架的基本功能。  因为这是一本......
  • AOP和OOP的区别
    前言在现代软件开发中,两种常见的编程范式是AOP(面向切面编程)和OOP(面向对象编程)。虽然它们有不同的关注点和实现方式,但在开发中可以相互补充,提高代码的模块化、复用性和可维护性。在OOP中,开发人员通过封装对象的状态和行为来实现代码的组织和复用。通过类、对象、继承和多态等机制......
  • 从“概念”到“应用”,字节跳动基于 DataLeap 的 DataOps 实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,火山引擎数智平台VeDIMeetup「超话数据」在深圳举办,来自火山引擎的产品专家分享了字节跳动基于DataLeap的DataOps实践,数据研发面临的挑战以及字节跳动最佳实践。现如今,越来越多的企业也......
  • 从“概念”到“应用”,字节跳动基于 DataLeap 的 DataOps 实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,火山引擎数智平台VeDIMeetup「超话数据」在深圳举办,来自火山引擎的产品专家分享了字节跳动基于DataLeap的DataOps实践,数据研发面临的挑战以及字节跳动最佳实践。 现如今,越......
  • SpringAOP
    SpringAOP原理深层解析前言IOC和AOP是Spring的两个重要组成部分,IOC之前也经过分析(点击跳转)可以抽象认为这是一个容器,那AOP又是什么东西呢?AOP是Aspect-OrientedProgramming(面向方面编程或者面向切面)的简称。它可以看成是OOP(面向对象编程)的一种延续。简单地说就是将代码中重......
  • spring_aop
                 ......