Welcome to MSDN Blogs Sign in | Join | Help

Catch, Rethrow and Filters - Why you should care?

 

A very common pattern in the usage of managed exception handling is that of catching an exception, inspecting it's type and rethrowing it once you realize it was not the exception you wanted to handle. Below is such an example (and should be avoided in preference to another approach described further below in the writeup) that uses CustomBaseException as the base type of an exception hierarchy and CustomDontWantToCatchException as a type that derives from the base class that you wouldn’t want to catch:

 

    private static void Foo()

    {

        try

        {

            // Set some program state

            // Do some work that can possibly throw an exception

        }

        finally

        {

            // Reset the program state

        }

    }

 

    public static void Main()

    {

        try

        {

            Foo();

        }

        catch (CustomBaseException ex)

        {

            if (ex is CustomDontWantToCatchException)

                throw; // Rethrow since we dont want to handle exceptions we aren’t interested in!

            else

            {

                // handle the exception

            }

        }

    }

 

Managed exception handling comprises of two passes:

 

1.       In the first pass, the CLR looks for a handler for the thrown exception. When one is found, it begins the second pass.

2.       In the second pass, also known as the unwind pass, it invokes all the termination handlers (e.g. managed finally/fault blocks, along with the native counterparts like __finally, destructors of stack allocated objects) that lie between the handler of the exception and the point at which the exception was thrown.

 

Thus, if you use a pattern like the one above, only to rethrow an exception since it was decided not to deal with it, prior to your [catch] handler being invoked, the termination handlers will be invoked. These handlers would end up doing the cleanup (like reset program state) before control is returned to the handler that agreed to handle the exception. Hence, by the time you enter the catch block, like in the example above, program state would have been modified since the finally in Foo would have been invoked. Thus, type handlers (like a catch clause) are invoked after the second pass has successfully been completed even though they are located in the first pass.

 

Assuming the exception was CustomDontWantToCatchException, the catch block proceeds to rethrow it, expecting it to go unhandled. When exceptions go unhandled, it is a good thing - and that is because we get the actual program state at the time when the exception was thrown. However, when pattern like the one above is used to rethrow conditionally, the program state gets modified and when the rethrown exception becomes unhandled, you will see actual program state from the point of rethrow and not the original throw.

 

So, how do we address such conditional exception processing without affecting program state for better diagnostics (in case the exception goes unhandled)?

 

Filters! Not really well known and not used a lot, managed filters are invoked by the CLR in the first pass when it is looking for a handler for an exception. While  a type handler is associated with a concrete type based upon which the CLR will decide whether the handler is capable of handling the exception or not, a filter can have custom logic to determine whether it wants to handle the exception or not.

 

When a filter is found in the first pass, the CLR will pass it the exception object corresponding to the thrown exception. The filter can then decide whether it wants to handle the exception or not, by accessing the state on the exception object (Note: accessing global program state from within a filter may lead to unexpected results. Thus, any such accesses should be avoided from within a filter). Once it has decided, a boolean is returned back to the CLR indicate its decision. If it agrees to handle the exception, the CLR will proceed to trigger the second (or unwind) pass. But if it decides not to handle the exception, the CLR will continue look further on the stack for any handler that may want to handle the exception. If none are found, the exception becomes unhandled and CLR's unhandled exception processing kicks in.

 

Hence, instead of catching all exceptions as shown in the example above (or using base type of a given exception hierarchy) and then rethrowing the caught exception because you didn’t want to handle it, write a filter that will enable you to do just that without triggering the second pass and modifying program state in the process.

 

And how does one write a managed filter?


While the CLR support filters, not all managed languages support it - IL and VB, for instance, do support it but C# does not! Rewriting the Main method above in VB , we can see how easy it can be to inspect an exception on the fly without affecting the program state and conditionally deciding whether, or not, to handle the exception:

 

 Function ShouldCatch(ByVal exception As CustomBaseException) As Boolean

 

        If TypeOf (exception) Is CustomDontWantToCatchException Then

            Return False

        Else

            Return True

        End If
 

End Function

 

Sub Main()

        Try

            Foo()

 

        Catch ex As CustomBaseException When ShouldCatch(ex) = True

 

            Console.WriteLine("Caught exception!")

 

        End Try

End Sub

 

VB's Catch keyword, when used with the When keyword, emits an IL filter as shown in the IL disassembly of the Main function below:

 

.method public static void  Main() cil managed

{

  .entrypoint

  .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )

  // Code size       62 (0x3e)

  .maxstack  3

  .locals init ([0] class ConsoleApplication1.CustomBaseException ex)

  IL_0000:  nop

  IL_0001:  nop

  IL_0002:  call       void ConsoleApplication1.Module1::Foo()

  IL_0007:  nop

  IL_0008:  leave.s    IL_003b

  IL_000a:  isinst     ConsoleApplication1.CustomBaseException

  IL_000f:  dup

  IL_0010:  brtrue.s   IL_0016

  IL_0012:  pop

  IL_0013:  ldc.i4.0

  IL_0014:  br.s       IL_0026

  IL_0016:  dup

  IL_0017:  stloc.0

  IL_0018:  call       void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.ProjectData::SetProjectError(class [mscorlib]System.Exception)

  IL_001d:  ldloc.0

  IL_001e:  call       bool ConsoleApplication1.Module1::ShouldCatch(class ConsoleApplication1.CustomBaseException)

  IL_0023:  ldc.i4.0

  IL_0024:  cgt.un

  IL_0026:  endfilter

  IL_0028:  pop

  IL_0029:  ldstr      "Caught exception!"

  IL_002e:  call       void [mscorlib]System.Console::WriteLine(string)

  IL_0033:  nop

  IL_0034:  call       void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError()

  IL_0039:  leave.s    IL_003b

  IL_003b:  nop

  .try IL_0002 to IL_000a filter IL_000a handler IL_0028 to IL_003b

  IL_003c:  nop

  IL_003d:  ret

} // end of method Module1::Main


You can see that, towards the end of the disassembly, we have the IL regions (bold and highlighted in yellow, between IL offset 3B and 3C) defining what constitutes the try block, the filter and if the exception is going to be handled, the filter-handler as well. Depending upon what the filter returns, after invoking ShouldCatch (which, in this example, decides whether the exception should be handled based upon its type), the CLR will either  execute the filter-handler or continue to go up the stack looking for exception handlers.

 

To conclude, for such exception inspection patterns that need to handle exception conditionally, use filters as they enable you to do the same as catching and rethrowing pattern without affecting the program state. It’d be great if they were in C#, but they’re not, so really consider using IL filters or VB where you need this functionality.

 

Gaurav Khanna

Developer,

Common Language Runtime

 

Published Thursday, February 05, 2009 4:46 PM by CLRTeam

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Catch, Rethrow and Filters - Why you should care?

We've been supporting this for quite a while in our Delphi Prism compiler:

try

...

except

 on e: CustomBaseException where e is not CustomDontWantToCatchException do  

   Console.WriteLine('Caught Exception!');

end;

Friday, February 06, 2009 2:26 AM by Carlo Kok

# re: Catch, Rethrow and Filters - Why you should care?

It is possible to use filters in C# if you provide a small method written in VB that wraps this construct.

Here is an example:

http://blogs.msdn.com/junfeng/archive/2008/12/08/exception-filter.aspx

BTW: beside filters, the CLR also supports another construct called fault which can also be useful sometimes. A wrapping method that captures all the features of exception handling could be written in IL for that purpose.

Friday, February 06, 2009 3:14 AM by Omer Mor

# re: Catch, Rethrow and Filters - Why you should care?

Great information! But guys, I often see that MS uses the pattern shown at the beginning to filter, for example, critical exceptions or something similar to this. This code catches an Exception, passes it to a method like IsCricicalException, and then decides to rethrow it, or to handle. Is that an indended usage? Is the BCL team aware of issues you described above?

Friday, February 06, 2009 3:38 AM by sich

# Catch, Rethrow and Filters - Why you should care?

You've been kicked (a good thing) - Trackback from DotNetKicks.com

Friday, February 06, 2009 4:22 AM by DotNetKicks.com

# re: Catch, Rethrow and Filters - Why you should care?

So . . . in C# 4 then? Surely?

Friday, February 06, 2009 8:11 AM by Kent Boogaart

# re: Catch, Rethrow and Filters - Why you should care?

Thanks for the post, it's really interesting! About the filtering pattern described: isn't this similar in function to the normal try/catch(child)/catch(base) pattern?

Meaning, suppose Foo can throw CustomBaseExceptions, some of which may be CustomDontWantToCatchExceptions; instead of allowing Foo to throw CustomBaseException, it could throw FooExceptions (maybe wrapping the group we want to catch), also derived from CustomBaseException, and then use

try / catch(FooException e)

That would also totally ignore CustomDontWantToCatchExceptions. What is the advantage of a filter over this?

Friday, February 06, 2009 11:02 AM by Karl Agius

# re: Catch, Rethrow and Filters - Why you should care?

@Carlo Kok: It's good to see that Delphi Prism supports filters. I haven't used Delphi myself, but I think it's nice to see languages support a rich variety of EH constructs. It's a testament to the richness of the .NET platform that a diverse set of languages can be expressed on the .NET runtime without runtime changes. I'm curious to know if Delphi supported filters or whether this is a Prism extension to the language syntax.

@Omer Mor: Junfeng's blog shows a nice pattern. If you read it, make sure to read the comments--he makes some good points in there as well ("catch and rethrow is a bad pattern"). Faults are an interesting construct as well, but consider that having both filters and faults is a bit redundant :)

@DotNetKicks: Ouch!

@Ken Boogaart: The CLR team doesn't own the languages implemented on top of the CLR. While we work closely with the C# team, we don't affect their language design. I haven't heard anything about filters in C# 4 but you should check with them. Eric Lippert has a good blog if you want to ask there about C# plans (http://blogs.msdn.com/ericlippert/).

@Karl Agius: One difference between filters and the pattern you describe is that filters allow arbitrary code execution whereas your pattern only discriminates on exception type. While Gaurav's ShouldCatch function just checks the type of the exception, it could have done anything--check the status of the left mouse button, for example--and decided to whether to catch the exception. Filters are a very powerful mechanism.

Friday, February 06, 2009 9:29 PM by Andrew Pardoe [CLR PM]

# re: Catch, Rethrow and Filters - Why you should care?

Hi Karl Agius,

In the approach you describe:

1) You describe deriving a new exception type to catch the exceptions you intend to catch. If catching specific exceptions is what you want to do, you dont need to define a new type but filters can help examine the type as the exception passes by.

2) You mention creating FooException that would group the exceptions you wish to catch. Again, not only you define a new type, but either:

  => everytime you throw from within (or callees of) Foo, you will need to throw the actual exception as the inner of FooException, OR

  => if the original exception was thrown by the callee of Foo, Foo will need to catch the specific types and let others pass by (which brings you back to what this post describes). Catching the original exception within Foo and then throwing the wrapped exception will destroy the native stack pertaining to the original point of throw (and the program state as well) which will affect debugging.

Filters help you ascertain the exception type in an easy fashion, without triggering unwinds or affecting program state. This is specially useful when you have multiple exception types and you want to conditionally catch them without writing explicit catch clause for each of them or writing a catch for base and rethrowing conditionally. If you are sure you want to catch just one type of exception, then writing an explicit catch for that type is good enough.

Sunday, February 08, 2009 2:42 PM by Gaurav Khanna [CLR Dev]

# re: Catch, Rethrow and Filters - Why you should care?

@Andrew Pardoe [CLR PM]: It's a Prism extension only (At least for now).

Tuesday, February 10, 2009 3:17 AM by Carlo Kok

# re: Catch, Rethrow and Filters - Why you should care?

@Andrew Pardoe [CLR PM]:"Faults are an interesting construct as well, but consider that having both filters and faults is a bit redundant :)"

It was my understanding that faults are like finally in that they are executed during the 2nd pass, and that the exception processing doesn't stop at them, but with the additional restriction that they are only executed if there was an exception.

I don't see how catch/filters can archive that?

If you put code into the filter, it's already executed during pass 1. If you want your code to be executed in pass 2 you have to actually catch the exception and re-throw it. Resulting in exactly the problems described in the original post.

A fault block on the other hand should only execute at all (and during the 2nd pass) if the 1st pass found a valid catch block further up the callstack.

So it looks to me that there is no way how filters for catch do make faults redundant?

Tuesday, February 10, 2009 3:30 AM by Thorsten Engler

# re: Catch, Rethrow and Filters - Why you should care?

@Thorsten Engler: Good catch! I meant that finally and fault blocks are redundant.

If I wanted to simulate fault blocks with a filter, though, I'd set a global boolean in my filter expression, not handle the exception, and use the global variable state to conditionally execute my fault block. Using Gaurav's example, I'd have ShouldCatch set GlobalFlag=true and return false. Then my "fault block" would be If GlobalFlag is true Then ...

This is a horrible hack, though, only meant for entertainment value. You can write all kinds of fun, horrible code by abusing EH.

@sich: Sorry, I missed responding to your post last time. I'm not in favor of functions "filtering" exceptions and rethrowing ones they don't want to catch. The BCL team is certainly aware of this advice.

Tuesday, February 10, 2009 11:49 AM by Andrew Pardoe [CLR PM]

# re: Catch, Rethrow and Filters - Why you should care?

@Kent Boogart

There was a suggestion on Connect to add filters to C# recently, but Mads on the C# team responded that he considered it an anti-pattern and had no interest in adding it to the language. It always surprises me how different language design teams can look at features so differently.

@Andrew

I don't see how finally and fault blocks are redundant. Sure, there is a pattern you can use to implement something similar to fault in finally, but it is not 100% effective in the face of ThreadAbortException. And besides, why rely on a pattern, which makes the code more difficult to read and understand, when it would fit so nicely as a language feature into the existing exception handling mechanism?

Tuesday, February 10, 2009 5:10 PM by David Nelson

# re: Catch, Rethrow and Filters - Why you should care?

@David Nelson: I agree, it's nice to use the language features rather than to code faults using finallies or finallies using faults. My point is merely that you can.

Look for a post here on ThreadAbortException in the future.  

Also, it's interesting how different languages value these patterns. I asked about Delphi supporting filters because Anders of C# fame was once Anders of Dephi fame...

Tuesday, February 10, 2009 6:23 PM by Andrew Pardoe [CLR PM]

# re: Catch, Rethrow and Filters - Why you should care?

Boo also supports Filter catch blocks.  Additionally, Boo also has support for Fault handlers, which are similar to Finally blocks, but execute only when an unhandled exception leaves their protected try block.  Useful for logging and those instances where you are just performing an operation and rethrowing otherwise.

Wednesday, February 11, 2009 2:18 AM by Marcus Griep

# When ….

VB has a lot of high level features other .Net languages, in particular C# don’t.  Sadly these are

Friday, February 20, 2009 8:56 PM by @ Head

# When ….

VB has a lot of high level features other .Net languages, in particular C# don’t.  Sadly these are

Friday, February 20, 2009 9:31 PM by VB Feeds

# Feature Jealousy

What’s got LINQ, but doesn’t have a yield keyword and no Action or multiline lambdas? What’s supposed to be an easy to learn language, but supports exception filters when other supposedly more complex languages don’t? The answer, VB.NET. “Co-evolution”

Wednesday, March 25, 2009 10:43 AM by phazed.com

# I need to let this sink in… but interesting stuff. try/catch and filters

Somebody posted a comment up my blog which contained something along the lines of  “and VB .NET

Thursday, April 09, 2009 10:51 AM by Goto 100 - Development with Visual Basic

# I need to let this sink in… but interesting stuff. try/catch and filters

Somebody posted a comment up my blog which contained something along the lines of  “and VB .NET

Thursday, April 09, 2009 10:52 AM by IUpdateable from Eric Nelson

# re: Catch, Rethrow and Filters - Why you should care?

カワイイ子ほど家出してみたくなるようです。家出掲示板でそのような子と出会ってみませんか?彼女たちは夕食をおごってあげるだけでお礼にHなご奉仕をしてくれちゃったりします

Sunday, June 14, 2009 6:24 PM by 家出掲示板

# re: Catch, Rethrow and Filters - Why you should care?

セレブ達は一般の人達とは接する機会もなく、その出会う唯一の場所が「逆援助倶楽部」です。 男性はお金、女性はSEXを要求する場合が多いようです。これは女性に圧倒的な財力があるから成り立つことの出来る関係ではないでしょうか?

Wednesday, June 17, 2009 7:16 PM by 逆援助

# re: Catch, Rethrow and Filters - Why you should care?

貴方のオ○ニーライフのお手伝い、救援部でHな見せたがり女性からエロ写メ、ムービーをゲットしよう!近所の女の子なら実際に合ってHな事ができちゃうかも!?夏に向けて開放的になっている女の子と遊んじゃおう

Thursday, June 18, 2009 7:09 PM by 救援部

# re: Catch, Rethrow and Filters - Why you should care?

家出中でネットカフェやマンガ喫茶にいる女の子たちは、お金が無くなり家出掲示板で今晩泊めてくれる男性を探しています。ご飯を食べさせてあげたり泊めてあげることで彼女たちはHなお礼をしてくれる事が多いようです

Sunday, June 21, 2009 5:43 PM by 家出

# re: Catch, Rethrow and Filters - Why you should care?

当サイトは、みんなの「勝ち組負け組度」をチェックする性格診断のサイトです。ホントのあなたをズバリ分析しちゃいます!勝ち組負け組度には、期待以上の意外な結果があるかもしれません

Monday, June 22, 2009 4:56 PM by 勝ち組負け組

# re: Catch, Rethrow and Filters - Why you should care?

男性が主役の素人ホストでは、男性のテクニック次第で女性会員様から高額な謝礼がもらえます。欲求不満な人妻や、男性と出会いが無い女性が当サイトで男性を求めていらっしゃいます。興味のある方はTOPページからどうぞ

Tuesday, June 23, 2009 6:01 PM by 素人

# re: Catch, Rethrow and Filters - Why you should care?

エロ漫画やエロゲーなどでかわいい女の子が淫らな肉欲に溺れる様子をみて「こんなの現実にあるわけない」そう思った事ありませんか?それが当サイトでは現実に実現できるのです!羨ましさを憶えた2次元の中での出来事。あなたと同じように望む女の子が当サイトに集まっているのです

Wednesday, June 24, 2009 5:46 PM by エロ漫画

# re: Catch, Rethrow and Filters - Why you should care?

高級チェリーの夏は童貞卒業の夏です。セレブ達も童貞を卒業させたくてウズウズしながら貴方との出会いを待っています。そんなセレブ達に童貞を捧げ、貴方もハッピーライフを送ってみませんか

Thursday, June 25, 2009 5:35 PM by 高級チェリー

# re: Catch, Rethrow and Filters - Why you should care?

何回かメールして会える人一緒に楽しいことしょ?お給料もらったばかりだからご飯くらいならごちそうしちゃうょ♪ cha-a@docomo.ne.jp とりあえずメールくださぃ★

Friday, June 26, 2009 5:43 PM by 助けて〜!

# re: Catch, Rethrow and Filters - Why you should care?

セレブラブではココロとカラダに癒しを求めるセレブ達と会って頂ける男性を募集しています。セレブ女性が集まる当サイトではリッチな彼女たちからの謝礼を保証、安心して男性はお金、女性は体の欲求を満たしていただけます。無料登録は当サイトトップページからどうぞ

Saturday, June 27, 2009 3:59 PM by セレブラブ

# re: Catch, Rethrow and Filters - Why you should care?

家出中でお金が無く、ネットカフェを泊り歩いているSOS少女たちは、家出掲示板で泊めてくれたり遊んでくれる男性を探しています。泊めてあげたりすると彼女たちはHなお礼をしてくれるかもしれません。家出少女と遊びたい方は当サイトはどうぞ

Sunday, June 28, 2009 4:33 PM by SOS少女

# re: Catch, Rethrow and Filters - Why you should care?

あなたの精神年齢を占ってみよう!当サイトは、みんなの「精神年齢度」をチェックする性格診断のサイトです。精神年齢度には、期待以上の意外な結果があるかも??興味がある方はぜひどうぞ

Monday, June 29, 2009 5:12 PM by 精神年齢

# re: Catch, Rethrow and Filters - Why you should care?

マダムと甘い時間を過ごしてみませんか?性欲を持て余しているセレブたちは出張ホストサービスで男性を探し、セックスを求めているのです。ホスト希望の方なら容姿や年齢は一切不問!ご近所の女性を探して、多額の報酬をゲットしよう

Tuesday, June 30, 2009 6:15 PM by 出張ホスト

# re: Catch, Rethrow and Filters - Why you should care?

楽しく、気持ちよく絶頂を味わえることで若い女性から熟女の女性まで幅広い世代で爆発的な人気がある、スローセックス。当サイトはプレイに興味がある、あるいは試してみたいけれど相手がいない…といった方の支援サイトです。当サイトでSEXパートナーを探してみませんか

Wednesday, July 01, 2009 4:50 PM by スローセックス

# re: Catch, Rethrow and Filters - Why you should care?

恋することって怖くないですか?最近ちょっと臆病になってて…そういうの抜きでえっちなことしたくて… lovely-i0709@docomo.ne.jp優しい人がいたらメール待ってます☆

Friday, July 03, 2009 5:26 PM by メル友募集

# re: Catch, Rethrow and Filters - Why you should care?

さあ、今夏も新たな出会いを経験してみませんか?当サイトは円助交際の逆、つまり女性が男性を円助する『逆円助交際』を提供します。逆円交際を未経験の方でも気軽に遊べる大人のマッチングシステムです。年齢上限・容姿・経験一切問いません。男性の方は無料で登録して頂けます。貴方も新たな出会いを経験してみませんか

Saturday, July 04, 2009 5:23 PM by 逆円助

# re: Catch, Rethrow and Filters - Why you should care?

みんなの精神年齢を測定できる、メンタル年齢チェッカーで秘められた年齢がズバリわかっちゃう!かわいいあの子も実は精神年齢オバサンということも…合コンや話のネタに一度チャレンジしてみよう

Monday, July 06, 2009 5:04 PM by 精神年齢

# re: Catch, Rethrow and Filters - Why you should care?

童貞卒業を考えているなら、迷わずココ!今まで童貞とヤッた事がない女性というのは意外と多いものです。そんな彼女たちは一度童貞とやってみたいと考えるのは自然な事と言えるでしょう。当サイトにはそんな好奇心旺盛な女性たちが登録されています

Tuesday, July 07, 2009 6:09 PM by 童貞卒業

# re: Catch, Rethrow and Filters - Why you should care?

素人ホストでは日頃のストレスを発散したい、もう一度恋がしたい、そういた女性が癒しを求めて登録されています。当サイトは癒やされたい女性・寂しい女性を癒やす男性が集うカップリングサイトです

Wednesday, July 08, 2009 5:11 PM by 素人

# re: Catch, Rethrow and Filters - Why you should care?

熟女だって性欲がある、貴方がもし人妻とSEXしてお金を稼ぎたいのなら、一度人妻ワイフをご利用ください。当サイトには全国各地からお金持ちのセレブたちが集まっています。女性から男性への報酬は、 最低15万円からと決めております。興味のある方は一度当サイト案内をご覧ください

Thursday, July 09, 2009 6:00 PM by 熟女

# re: Catch, Rethrow and Filters - Why you should care?

恥ずかしいけどやらしいことしたくてしょうがありません…誰か一緒にしてくれませんか?とりあえず連絡待ってます☆ cute.y.0902@docomo.ne.jp

Friday, July 10, 2009 7:04 PM by メル友募集

# re: Catch, Rethrow and Filters - Why you should care?

女の子のオナニーを手伝って報酬をもらう仕事に興味はありませんか?新感覚SNSの当サイトで見るだけで3万円、お手伝いで5万円の高額アルバイトを始めてみたい方は当サイトへどうぞ。

Saturday, July 11, 2009 6:59 PM by オナニー

# re: Catch, Rethrow and Filters - Why you should care?

家出娘や一人で寂しい子が書き込むSOS娘BBSでは彼女たちと遊んであげたり泊めてあげれる、優しい人を募集しています。見返りにHをしてくれる子も多く、いろんな理由がある少女があなたの助けを待っています。

Sunday, July 12, 2009 5:40 PM by SOS娘

# re: Catch, Rethrow and Filters - Why you should care?

話題の小向美奈子ストリップを盗撮!入念なボディチェックをすり抜けて超小型カメラで撮影した神動画がアップ中!期間限定配信の衝撃的映像を見逃すな

Monday, July 13, 2009 8:53 PM by 小向美奈子

# re: Catch, Rethrow and Filters - Why you should care?

mixiで禁止された「出会い」コミュニティーが復活しているのをご存じですか?当サイトでは規制前の楽しかった頃のミクシーを再現しているという好評を頂いております。会員数も右肩上がりに増えていますので、興味のある方はぜひご覧ください

Wednesday, July 15, 2009 7:55 PM by mixi

# re: Catch, Rethrow and Filters - Why you should care?

癒されたい女性や、寂しい素人女性を心も体も癒してあげるお仕事をご存じですか?女性宅やホテルに行って依頼主の女性とHしてあげるだけで高額の謝礼を手に入れる事が出来るのです。興味のある方は当サイトTOPページをご覧ください

Thursday, July 16, 2009 7:41 PM by 素人

# re: Catch, Rethrow and Filters - Why you should care?

最近してないし欲求不満です。一緒にいやらしいことしませんか?エッチには自信あるよ(笑) nyaon.chuki@docomo.ne.jp メール待ってるよ☆

Friday, July 17, 2009 7:03 PM by メル友募集

# re: Catch, Rethrow and Filters - Why you should care?

女性向け風俗サイトで出張デリバリーホストをしてみませんか?時給2万円以上の超高額アルバイトです。無料登録をしてあとは女性からの呼び出しを待つだけなので、お試し登録も歓迎です。興味をもたれた方は今すぐどうぞ。

Saturday, July 18, 2009 1:50 PM by ホスト

# re: Catch, Rethrow and Filters - Why you should care?

最近TVや雑誌で紹介されている家出掲示板では、全国各地のネットカフェ等を泊り歩いている家出娘のメッセージが多数書き込みされています。彼女たちはお金がないので掲示板で知り合った男性の家にでもすぐに泊まりに行くようです。あなたも書き込みに返事を返してみませんか

Sunday, July 19, 2009 6:04 PM by 家出

# re: Catch, Rethrow and Filters - Why you should care?

あなたの性格を、動物に例えて占っちゃいます。もしかしたらこんな動物かも!?動物占いをうまく使って、楽しい人間関係を築いてください

Monday, July 20, 2009 6:25 PM by 動物占い

# re: Catch, Rethrow and Filters - Why you should care?

あなたの真のH度を診断できるHチェッカー!コンパや飲み会で盛り上がること間違いなしのおもしろツールでみんなと盛り上がろう

Monday, August 03, 2009 5:51 PM by チェッカー

# re: Catch, Rethrow and Filters - Why you should care?

よーやくプロフ持ちになれました。私の事気になった方がいましたら気軽にメールください。恋バナとか好きなんでよろしくでぇす。zuttozuttoissyodayo@docomo.ne.jp

Friday, August 21, 2009 7:13 PM by ほむぺ完成記念

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker